在Web自动化测试中,页面元素的加载速度往往会影响到测试的执行效率和稳定性。为了解决这个问题,Selenium提供了一系列的等待条件,让我们可以在编写测试用例时,根据实际需求选择合适的等待条件,提高测试的效率和稳定性。本文将详细介绍Selenium中的17种元素等待条件,并通过实例代码演示如何使用这些等待条件。
- title_is:判断title是否出现
这个等待条件会检查当前页面的title是否与指定的字符串完全相等。如果相等,则返回True,否则继续等待。
- title_contains:判断title是否包含某些字符
这个等待条件会检查当前页面的title是否包含指定的字符串。如果包含,则返回True,否则继续等待。
- presence_of_element_located:判断某个元素是否被加到了DOM树里
这个等待条件会检查指定的元素是否存在于DOM树中。如果存在,则返回True,否则继续等待。需要注意的是,这个条件并不保证元素是可见的。
- visibility_of_element_located:判断某个元素是否被添加到了DOM里并且可见,宽和高都大于0
这个等待条件会检查指定的元素是否存在于DOM树中,且元素是可见的(即元素的宽和高都大于0)。如果满足条件,则返回True,否则继续等待。
- visibility_of:判断元素是否可见,如果可见就返回这个元素
这个等待条件会检查指定的元素是否可见。如果可见,则返回该元素,否则继续等待。
- presence_of_all_elements_located:判断是否至少有1个元素存在于DOM树中
这个等待条件会检查是否有至少一个指定的元素存在于DOM树中。如果有,则返回True,否则继续等待。
- visibility_of_any_elements_located:判断是否至少有一个元素在页面中可见
这个等待条件会检查是否有至少一个指定的元素在页面中可见。如果有,则返回True,否则继续等待。
- text_to_be_present_in_element:判断指定的元素中是否包含了预期的字符串
这个等待条件会检查指定的元素中是否包含了预期的字符串。如果包含,则返回True,否则继续等待。
- text_to_be_present_in_element_value:判断指定元素的属性值中是否包含了预期的字符串
这个等待条件会检查指定元素的属性值中是否包含了预期的字符串。如果包含,则返回True,否则继续等待。
- frame_to_be_available_and_switch_to_it:判断该frame是否可以switch进去
这个等待条件会检查指定的frame是否可以切换进去。如果可以,则切换到该frame并返回True,否则继续等待。
- invisibility_of_element_located:判断某个元素在是否存在于DOM或不可见
这个等待条件会检查指定的元素是否不存在于DOM树中或者不可见。如果满足条件,则返回True,否则继续等待。
- element_to_be_clickable:判断某个元素是否可见并且是enable的,代表可点击
这个等待条件会检查指定的元素是否可见并且是enable的。如果满足条件,则返回True,否则继续等待。
- staleness_of:等待某个元素从DOM树中移除
这个等待条件会检查指定的元素是否从DOM树中移除。如果移除,则返回True,否则继续等待。
- element_to_be_selected:判断某个元素是否被选中了,一般用在下拉列表
这个等待条件会检查指定的元素是否被选中了。如果选中,则返回True,否则继续等待。
- element_selection_state_to_be:判断某个元素的选中状态是否符合预期
这个等待条件会检查指定的元素的选中状态是否符合预期。如果符合,则返回True,否则继续等待。
- element_located_selection_state_to_be:判断某个元素的选中状态是否符合预期
这个等待条件会检查指定的元素的选中状态是否符合预期。如果符合,则返回True,否则继续等待。
- presence:判断页面上是否存在
这个等待条件会检查页面上是否存在指定的元素。如果存在,则返回True,否则继续等待。
接下来,我们通过一个实例代码来演示如何使用这些等待条件。假设我们有一个简单的HTML页面,其中包含一个按钮和一个文本框。当点击按钮后,会弹出一个提示框显示“Hello, World!”。我们的任务是使用Selenium编写一个测试用例,验证点击按钮后是否能正确弹出提示框。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
deftest_button_click():
driver = webdriver.Chrome()
driver.get("http://XXXX/test.html")# 点击按钮
driver.find_element(By.ID,"button").click()# 等待提示框出现
wait = WebDriverWait(driver,10)
alert = wait.until(EC.visibility_of_element_located((By.ID,"alert")))# 验证提示框的内容assert alert.text =="Hello, World!"
driver.quit()if __name__ =="__main__":
test_button_click()
在这个例子中,我们使用了
visibility_of_element_located
等待条件来等待提示框出现。当提示框可见时,我们获取其内容并验证是否为“Hello, World!”。这样,我们就可以确保在点击按钮后,提示框能正确弹出并显示预期的内容。
版权归原作者 tester Jeffky 所有, 如有侵权,请联系我们删除。