id定位
日常生活中身边可能存在相同名字的人,但是每个人的身份证号码是唯一的,在app界面元素中也可以使用id值来区分不同的元素,然后进行定位操作。Appium中可以使用 find_element_by_id() 方法来进行id定位。
1.打开appium,找到jiaoyibao_Android_5.1.1,点击Start Session
2.获取跳过的id
3.获取个人头像的id
3.ptyhon代码如下
jiaoyibao_cancel_skip.py
from appium import webdriver #导入appium包
desired_caps={} #定义一个字典,用来存储capablity的相关信息
desired_caps['platformName']='Android' #设备平台的名称
desired_caps['deviceName']='127.0.0.1:62025' #设备名称
desired_caps['platforVersion']='5.1.1' #设备的版本号
# desired_caps['deviceName']='JDN-W09' #设备名称
# desired_caps['platforVersion']='6.0.1' #设备的版本号
# desired_caps['udid']='7YRBBDB7B0702188' #真机串号
desired_caps['app']=r'C:\Users\bella\Desktop\20180922\jiaoyibao.apk' #获取包路径
desired_caps['appPackage']='com.konsonsmx.iqdii' #获取包名
desired_caps['appActivity']='com.konsonsmx.market.module.base.ui.FlashADActivity' #获取activity启动
desired_caps['noReset']='true' #模拟用户非首次启动
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps) #启动服务
driver.implicitly_wait(2) #启动后等待2秒
driver.find_element_by_id('com.konsonsmx.iqdii:id/tvCountDown').click() #先点击跳过
driver.find_element_by_id('com.konsonsmx.iqdii:id/ib_title_left').click() #点击个人头像
方案探索2——异常捕捉
既然上面的if语句判断无法生效,但是我们发现一个突破口,那就是捕捉NoSuchElementException异常。
jiaoyibao_cancel_skip_try.py
from appium import webdriver #导入appium包
from selenium.common.exceptions import NoSuchElementException
desired_caps={} #定义一个字典,用来存储capablity的相关信息
desired_caps['platformName']='Android' #设备平台的名称
desired_caps['deviceName']='127.0.0.1:62025' #设备名称
desired_caps['platforVersion']='5.1.1' #设备的版本号
desired_caps['app']=r'C:\Users\bella\Desktop\20180922\jiaoyibao.apk' #获取包路径
desired_caps['appPackage']='com.konsonsmx.iqdii' #获取包名
desired_caps['appActivity']='com.konsonsmx.market.module.base.ui.FlashADActivity' #获取activity启动
desired_caps['noReset']='true' #模拟用户非首次启动
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps) #启动服务
driver.implicitly_wait(2) #启动后等待2秒
def check_skipBtn():
print("check_skipBtn")
try:
skipBtn = driver.find_element_by_id('com.konsonsmx.iqdii:id/tvCountDown')
except NoSuchElementException:
print('no skipBtn') #当没有这个元素就打印出no cancelBtn
else:
skipBtn.click() #存在这个元素就去点击
def check_loginBtn():
print("check_loginBtn")
try:
loginBtn = driver.find_element_by_id('com.konsonsmx.iqdii:id/ib_title_left')
except NoSuchElementException:
print('no loginBtn') #当没有这个元素就打印出no cancelBtn
else:
loginBtn.click() #存在这个元素就去点击
check_skipBtn()
check_loginBtn()