Appium学习笔记12-隐式等待、显式等待

操作元素经常会因为网络等原因,元素还没加载出来,命令找不到元素而报错,这时就需要设置等待时间。
等待分为隐式与显式:

#隐式等待或这说是全局等待,对全局操作都起作用
driver.implicitly_wait(5) #所有操作都要等待5秒

#显式等待或者说是单一等待,需要对每一个操作进行一次设置
#p.s.需要导入WebDriverWait包
wait = WebDriverWait(driver,5,1)#创建一个5秒的等待,每1秒尝试1次操作。
button = wait.until(lambda x:x.find_element)#为显示等待赋予操作方法。

代码:

#导入库
from appium import webdriver
from selenium.webdriver.support.wait import WebDriverWait

desired_caps = dict()#创建字典
desired_caps['platformName'] = 'Android'#添加字典字段:手机平台(Android、iOS)
desired_caps['platformVersion'] = '5.1'#添加字典字段:系统版本号(可从手机的设置里面查看)
desired_caps['deviceName'] = 'myphone'#添加字典字段:设备名称(随便写即可)
desired_caps['appPackage'] = 'com.android.settings'#添加字典字段:要打开的app包名
desired_caps['appActivity'] = 'com.android.settings.Settings'#添加字典字段:APP的界面名
driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)#调用方法,其中'http://localhost:4723/wd/hub'即为appium服务器地址
driver.find_element_by_id("android:id/button1").click()#根据id定位元素,弹出应用的授权框,点击“确认”

#隐式等待
driver.implicitly_wait(5) #所有操作都要等待5秒
print("----点击之前----")
driver.find_element_by_xpath("//*[@content-desc='转到上一层级']").click()#根据xpath定位返回按钮,并点击
print("----点击之后----")

#显示等待
WebDriverWait(driver,50,10).until(lambda x:x.find_element_by_xpath("//*[@content-desc='转到上一层级']"))#创建一个50秒的等待,每10秒尝试1次查找。


driver.quit()#退出此次驱动连接

发布了14 篇原创文章 · 获赞 3 · 访问量 2786

猜你喜欢

转载自blog.csdn.net/E_I_F/article/details/105371097