📅  最后修改于: 2023-12-03 15:20:04.015000             🧑  作者: Mango
在使用Selenium自动化脚本时,经常会遇到等待某些元素加载完毕或者某些操作完成的情况。使用显式等待可以在特定条件被满足前一直等待,直到满足条件后再执行后续操作。在Python中,可以使用webdriver模块中的ExpectedConditions类来设置显式等待,本文将介绍如何在Selenium Python中使用显式等待。
在使用Selenium Python时,可以通过WebDriverWait
函数来设置显式等待,其语法如下:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
element = WebDriverWait(driver, timeout).until(EC.presence_of_element_located((By.{by}, '{value}')))
其中,driver
是浏览器驱动对象,timeout
是最长超时时间(以秒为单位),By
是定位方法,{by}
是定位方法的字符串,{value}
是定位方法的值。
使用WebDriverWait
函数会返回ExpectedCondition
类的实例。可以使用until
方法等待特定条件的成立。在这个例子中,我们等待页面上的某个元素被定位出来。
下面是在Selenium Python中支持的几种特定条件:
presence_of_element_located(locator)
:等待指定的元素被定位;visibility_of_element_located(locator)
:等待指定元素在屏幕上可见;element_to_be_clickable(locator)
:等待指定元素可以被点击;text_to_be_present_in_element(locator, text)
:等待指定元素包含指定的文本;title_contains(title)
:等待页面标题包含指定文本;title_is(title)
:等待页面标题等于指定文本;alert_is_present()
:等待弹出框出现。下面是一个Selenium Python脚本的完整示例,其中设置显式等待,等待某个元素被定位出来:
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
# 启动浏览器
driver = webdriver.Chrome()
# 访问网站
driver.get("https://www.google.com")
# 设置显式等待
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "q")))
# 查找搜索框,并输入关键字,然后提交
element.send_keys("Selenium Python")
element.submit()
# 关闭浏览器
driver.quit()
在这个例子中,我们使用了presence_of_element_located
条件来等待搜索框被定位出来。如果在10秒钟内无法定位到这个元素,将会抛出TimeoutException
异常。
以上就是Selenium Python中显式等待的介绍,希望这篇文章可以帮助你更好地使用Selenium进行自动化测试。