selenium 等待获得文本出现
时间: 2023-07-21 09:40:35 浏览: 98
如果你想等待一个元素获得文本后再进行下一步操作,你可以使用 `expected_conditions` 模块中的 `text_to_be_present_in_element` 方法。
具体步骤如下:
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.text
```
完整的代码如下:
```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.text
```
你可以在需要等待某个元素获得文本后再进行下一步操作的地方调用这个函数。例如:
```python
text = wait_for_text(driver, 10, "//div[@class='example']", "Hello, world!")
print(text)
```
这个函数会等待最长 10 秒,直到找到 class 为 `example` 的 div 元素中出现文本为 "Hello, world!",然后返回该元素的文本。如果等待超时,函数会抛出 `TimeoutException` 异常。
阅读全文