selenium 动态查找
时间: 2023-07-12 13:47:34 浏览: 134
Selenium 可以通过以下方式来动态查找元素:
1. 使用 `time.sleep()` 等待元素加载完成。这种方法比较简单,但是不太灵活,因为需要手动指定等待时间,如果等待时间不够,会导致元素还未加载完成,如果等待时间过长,会影响测试效率。
```python
import time
from selenium import webdriver
driver = webdriver.Firefox()
driver.get(url)
time.sleep(3) # 等待 3 秒,等待元素加载完成
element = driver.find_element_by_id('element-id')
```
2. 使用显示等待(`WebDriverWait`)来等待元素加载完成。这种方法比较灵活,可以设置最大等待时间、轮询间隔等参数,可以在指定时间内等待元素加载完成,如果超时则抛出异常。
```python
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.Firefox()
driver.get(url)
# 等待 10 秒,直到元素加载完成
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'element-id'))
)
```
3. 使用隐式等待(`implicitly_wait()`)来等待元素加载完成。这种方法会在查找元素时,等待指定时间,如果元素还未加载完成,则抛出异常。这种方法相对简单,但是不够灵活,因为需要在每次查找元素前设置等待时间。
```python
from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(10) # 设置隐式等待时间,单位为秒
driver.get(url)
element = driver.find_element_by_id('element-id') # 会等待 10 秒,直到元素加载完成
```
综上所述,推荐使用显示等待来动态查找元素,因为它比较灵活,并且可以设置等待时间和轮询间隔等参数。
阅读全文