id 元素定位练习(考研帮)
测试场景1
1.安装考研帮kaoyan3.1.0.apk
2.点击升级页面取消按钮
3.点击引导页面的跳过按钮
获取id
python代码如下
kyb_cancel_skip.py
from appium import webdriver
desired_caps={}
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\kaoyan3.1.0.apk'
desired_caps['appPackage']='com.tal.kaoyan'
desired_caps['appActivity']='com.tal.kaoyan.ui.activity.SplashActivity'
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
driver.implicitly_wait(5)
driver.find_element_by_id('android:id/button2').click() #先点击取消按钮
driver.find_element_by_id('com.tal.kaoyan:id/tv_skip').click() #再点击跳过按钮
方案探索1——if条件判断
有同学可能想到用if来做条件判断,判断元素是否存在,存在则点击,不存在则跳过。
kyb_cancel_skip_if.py
from appium import webdriver
desired_caps={}
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\kaoyan3.1.0.apk'
desired_caps['appPackage']='com.tal.kaoyan'
desired_caps['appActivity']='com.tal.kaoyan.ui.activity.SplashActivity'
desired_caps['noReset']='true' #模拟用户非首次启动
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
driver.implicitly_wait(5)
cancelBtn=driver.find_element_by_id('android:id/button2').click() #先点击取消按钮
skipBtn=driver.find_element_by_id('com.tal.kaoyan:id/tv_skip').click() #再点击跳过按钮
if cancelBtn:
cancelBtn.click()
else:
print('no cancelBtn')
if skipBtn:
skipBtn.click()
else:
print('no skipBtn')
方案探索2——异常捕捉
既然上面的if语句判断无法生效,但是我们发现一个突破口,那就是捕捉NoSuchElementException异常。
kyb_cancel_skip_try.py
from appium import webdriver
from selenium.common.exceptions import NoSuchElementException
desired_caps={}
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\kaoyan3.1.0.apk'
desired_caps['appPackage']='com.tal.kaoyan'
desired_caps['appActivity']='com.tal.kaoyan.ui.activity.SplashActivity'
desired_caps['noReset']='true' #模拟用户非首次启动
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
driver.implicitly_wait(5)
def check_cancelBtn():
print('check cancelBtn')
try:
cancelBtn=driver.find_element_by_id('android:id/button2').click() #查找这个元素
except NoSuchElementException:
print('no cancelBtn') #当没有这个元素就打印出no cancelBtn
else:
cancelBtn.click() #存在这个元素就去点击
def check_skipBtn():
print("check_skipBtn")
try:
skipBtn = driver.find_element_by_id('com.tal.kaoyan:id/tv_skip')
except NoSuchElementException:
print('no skipBtn')
else:
skipBtn.click()
check_cancelBtn()
check_skipBtn()