进行app ui自动化测试时,app内会不定时的出现弹窗,特别是启动app后,会出现开屏广告、广告弹窗、升级弹窗、消息提示弹窗等。
这些弹窗出现的时机和页面都不确定。弹窗出现时,会定位不到原来需要的元素,这时需要先将弹窗关闭,才能定位到原来的元素。
封装一个方法,这样不用在测试用例中,每次定位元素时都重新写try...except语句;
方法内,把关闭弹窗的定位元素加入到弹窗列表中;
再使用try...except,当定位不到元素时,遍历弹窗列表,判断是否有弹窗元素,如果有,关掉;再递归函数-定位原来的业务元素,如果依然定位不到,继续遍历弹窗列表。如果遍历弹窗列表都没找到弹窗元素,就抛异常。
处理弹窗方法:
#myException.py文件
from appium.webdriver.common.appiumby import AppiumBy
def myFindElement(driver, by1, ele):
# 弹窗列表的关闭按钮元素
poplist = [(AppiumBy.ID, 'com.xx.xxx:id/close'),
(AppiumBy.ID, 'com.xx.xxx:id/confirm'),
(AppiumBy.XPATH, '//*[@text="跳过"]')]
try:
return driver.find_element(by1, el