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()#退出此次驱动连接

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值