appium+python四种等待方式

三大等待:

1、显示等待

所有条件都是明确指出来,等待条件存在之后,再进行后续的代码执行

等待:webdriverwait 条件:expected_condition

等待20秒 检测条件成立的间隔:默认是0.5秒

使用方法

from selenium.webdriver.support.wait import WebDriverWait

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None).until(method, message='')


# driver:浏览器驱动
# timeout:最大等待时间
# poll_frequency:检测的间隔时间,默认0.5
# ignored_exceptions:超时后的异常信息,默认抛出NoSuchElementException


# until()方法:直到条件成立返回为真,等待结束。如果超时,抛出TimeoutException,将message传入异常
# method:在等待期间,每隔一段时间调用这个传入的方法,直到返回值不是False,一般使用lambda匿名函数
# message:提示信息,出现异常时会将这个信息输出在控制台

案例

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait


# 显示等待:等待结果中要点击的某个链接元素出现
WebDriverWait(driver,10).until(lambda x:x.find_element_by_xpath(path),message='元素没有显示')
# 点击结果中的某一个链接
driver.find_element_by_xpath(path).click()
driver.quit()

 

 

2、隐式等待

当使用了隐式等待执行测试的时候,如果 WebDriver没有在 DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常
换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是0
一旦设置了隐式等待,则它存在整个 WebDriver 对象实例的声明周期中,隐式的等到会让一个正常响应的应用的测试变慢,
它将会在寻找每个元素的时候都进行等待,这样会增加整个测试执行的时间

全局等待的方式,如果找不到控件,会在5秒以内一直重复寻找,找到后不管是否到5秒,继续下一步。如果5秒后还是未找到则系统将报错误(下一页要执行操作的元素没有找见)。

driver.implicitly_wait(50)

  

3、强制等待

time.sleep(10)

  

4.wait_activity()

wait_activity()方法是andriod特有的

在启动app的时候,要配置包名和启动名,一个启动名对应一个页面,也就是启动app然后打开某一个页面。换句话说,在等待这个页面出现,也就是等待activity出现。(activity相当于启动名)

 

wait_activity(self, activity, timeout, interval=1)
 
# 返回的True 或 False :

说明:

等待指定的activity出现直到超时,interval为扫描间隔1秒,即每隔几秒获取一次当前的activity 。

Agrs:

activity:需等待的目标 activity (相当于启动名,就填写启动名)
timeout:最大超时时间,单位是s
interval:循环查询时间

 

一般是显示等待为主,强制等待为辅

posted @ 2023-09-11 14:12  yimu-yimu  阅读(233)  评论(0编辑  收藏  举报