标签:本地 自定义 syn expect def 一个 出现 后台 挥手
HTML 页面加载、解析过程:
渲染过程主要包括以下步骤:
</html>
后结束渲染。强制等待,线程休眠一定时间,一般不推荐:
time.sleep(3)
在服务端等待,设置一个等待时间,轮询查找(默认0.5秒)元素是否出现,如果达到设置的等待时间还没出现就抛出异常。
driver.implicitly_wait(TIMEOUT) # TIMEOUT单位为秒
在客户端等待,在代码中自定义等待条件,可针对于某个特定的元素或者条件设置等待时间,满足条件时继续执行代码。使用WebDriverWait类和expected_conditions类来实现,WebDriverWait类包括了until()和 until_not两种方法,通过判断条件是否为真进行等待,每隔一段时间(默认为0.5秒)进行条件判断,如果条件成立,则执行下一步,否则继续等待,直到超过设置的最长时间。
WebDriverWait(self.driver, timeout, poll_frequency=0.5, ignored_exceptions=None).until(expected_conditions. visibility_of_element_located(LOCATOR))
expected_conditions类提供了很多期望条件:
title_is
title_contains
presence_of_element_located
visibility_of_element_located
visibility_of
presence_of_all_elements_located
text_to_be_present_in_element
text_to_be_present_in_element_value
frame_to_be_available_and_switch_to_it
invisibility_of_element_located
element_to_be_clickable
staleness_of
element_to_be_selected
element_located_to_be_selected
element_selection_state_to_be
element_located_selection_state_to_be
alert_is_present
也可以使用lambda表达式
WebDriverWait(driver, timeout).until(lambda x:x.find_element_by_id("someld")
示例代码:
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
def test_wait(self):
self.driver.find_element(By.XPATH,‘the_xpath_path1‘).click()
## 方法1
def wait(x):
# 定义等待条件
return self.driver.find_elements(By.XPATH,‘the_xpath_path2‘)
WebDriverWait(self.driver, 10).until(wait)
WebDriverWait(self.driver, 10).until_not(wait)
## 方法2
WebDriverWait(self.driver, 10).until(expected_conditions.presence_of_element_located(By.XPATH, ‘the_xpath_path2‘))
## 方法3
WebDriverWait(self.driver, 10).until(lambda x:x.find_element_by_id("someld")
WebDriver隐式等待和显式等待可参考官方文档:https://selenium-python.readthedocs.io/waits.html, 本文介绍了三种等待方式:
除了上面介绍的三种等待方式,WebDriver还有两个等待方法:set_script_timeout和set_page_load_timeout。
set_script_timeout设置等待execute_async_script(Javascript / AJAX 调用 )执行完成,set_page_load_timeout设置等待页面加载完成。
driver.set_script_timeout(5)
driver.set_page_load_timeout(5)
文章标题:selenium/appium 等待方式介绍
本文作者:hiyo
本文链接:https://www.cnblogs.com/hiyong/p/14438812.html
欢迎关注公众号:「测试开发小记」及时接收最新技术文章!
标签:本地 自定义 syn expect def 一个 出现 后台 挥手
原文地址:https://www.cnblogs.com/hiyong/p/14438812.html