expected_conditions 等待文本出现
时间: 2024-03-22 16:40:20 浏览: 53
`expected_conditions` 模块中提供了多个方法来等待元素的状态或属性,其中也包括等待文本出现的方法。
你可以使用 `text_to_be_present_in_element` 或 `text_to_be_present_in_element_value` 方法来等待元素中出现指定的文本。
具体步骤如下:
1. 引入模块
```python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
```
2. 定义等待条件
```python
wait = WebDriverWait(driver, timeout)
element = wait.until(EC.text_to_be_present_in_element((By.XPATH, xpath), text))
```
其中,`driver` 是 webdriver 对象,`timeout` 是等待的最长时间(单位为秒),`xpath` 是待查找元素的 xpath,`text` 是待查找的文本。
3. 返回元素
```python
return element
```
完整的代码如下:
```python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
def wait_for_text(driver, timeout, xpath, text):
wait = WebDriverWait(driver, timeout)
element = wait.until(EC.text_to_be_present_in_element((By.XPATH, xpath), text))
return element
```
你可以在需要等待某个元素文本出现的地方调用这个函数。例如:
```python
element = wait_for_text(driver, 10, "//div[@class='example']", "Hello, world!")
```
这个函数会等待最长 10 秒,直到找到 class 为 `example` 的 div 元素中出现文本为 "Hello, world!"。如果找到了符合条件的元素,函数会返回该元素对象;如果等待超时,函数会抛出 `TimeoutException` 异常。
阅读全文