在Selenium UI自动化测试中,显示等待中的expected_conditions是一组用于等待特定条件的方法集合。它提供了一种灵活的方式来等待页面元素的出现、消失、可点击等状态。以下是对expected_conditions的详细介绍:
一、基本用法
- 引用expected_conditions
在使用Selenium进行自动化测试时,需要从
selenium.webdriver.support.expected_conditions模块中引用所需的等待条件方法。
例如:from selenium.webdriver.support import expected_conditions as EC
- 结合WebDriverWait使用
expected_conditions通常与WebDriverWait一起使用,以实现显示等待。WebDriverWait会在给定的时间内不断检查是否满足特定条件,如果满足条件则立即返回,否则会抛出TimeoutException异常。
示例代码:
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
def wait_click_element(self,locator):
WebDriverWait(
#浏览器对象
driver=self.driver,
#最大超时时间
timeout=timeout,
#轮询时间
poll_frequency=poll_time,
ignored_exceptions = None).until(
ec.visibility_of_element_located(locator)
).click()
WebDriverWait参数说明:
- driver - 浏览器驱动实例
- timeout - 等待的超时时间,单位是秒
- poll_frequency - 轮询时间,默认情况是0.5s
- ignored_exceptions - 等待期间被忽略的异常类,是一个可迭代结构,默认情况只包含NoSuchElementException(找不到元素异常)
二、常见的等待条件方法
presence_of_element_located(locator):等待指定定位器的元素出现在页面上。
visibility_of_element_located(locator):等待指定定位器的元素在页面上可见。
element_to_be_clickable(locator):等待指定定位器的元素可点击。
presence_of_all_elements_located(locator):等待页面上所有符合指定定位器的元素出现。
visibility_of_all_elements_located(locator):等待页面上所有符合指定定位器的元素可见。
title_contains(title):等待页面标题包含指定的字符串。
title_is(title):等待页面标题完全等于指定的字符串。
text_to_be_present_in_element(locator, text):等待指定定位器的元素包含指定的文本。
text_to_be_present_in_element_value(locator, text):等待指定定位器的元素的值包含指定的文本。
alert_is_present():等待页面上出现警告框。
frame_to_be_available_and_switch_to_it(locator):等待指定的框架可用并切换到该框架。
三、优势和作用
- 提高测试稳定性:通过等待特定条件满足,可以避免因页面加载不完全或元素尚未出现而导致的测试失败。这使得测试更加稳定可靠。
- 减少等待时间:相比于使用固定的睡眠时间进行等待,显示等待可以根据实际情况动态地等待,从而减少不必要的等待时间,提高测试效率。
- 增强测试的灵活性:可以根据不同的测试场景选择合适的等待条件方法,满足各种复杂的测试需求。
在使用WebDriverWait时,需要合理设置等待时间。可以根据实际情况结合使用隐式等待和显示等待。总之,expected_conditions在Selenium自动化测试中提供了强大的等待功能,通过合理使用可以提高测试的稳定性、效率和灵活性。