📜  Selenium Python中的显式等待(1)

📅  最后修改于: 2023-12-03 15:20:04.015000             🧑  作者: Mango

Selenium Python中的显式等待

在使用Selenium自动化脚本时,经常会遇到等待某些元素加载完毕或者某些操作完成的情况。使用显式等待可以在特定条件被满足前一直等待,直到满足条件后再执行后续操作。在Python中,可以使用webdriver模块中的ExpectedConditions类来设置显式等待,本文将介绍如何在Selenium Python中使用显式等待。

1. 设置显式等待的用法

在使用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方法等待特定条件的成立。在这个例子中,我们等待页面上的某个元素被定位出来。

2. 支持的特定条件

下面是在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():等待弹出框出现。
3. 完整示例

下面是一个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进行自动化测试。