python的隐式等待和显示等待
时间: 2023-09-27 19:07:45 浏览: 40
Python中的WebDriver提供了隐式等待和显式等待两种等待方式。
隐式等待是设置一个全局的等待时间,对整个浏览器窗口的生命周期都有效。设置隐式等待后,如果WebDriver没有立即找到元素,它将在设定的时间内不断地尝试查找,直到找到元素或者时间到期。
示例代码:
```python
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10) # 设置隐式等待时间为10秒
driver.get("http://www.example.com")
elem = driver.find_element_by_id("myId") # 如果元素不在页面上,WebDriver将最多等待10秒钟。
```
显式等待则是针对某个特定的情况设置等待时间。通过ExpectedCondition条件判断,如果条件成立,则立即返回,否则将持续等待指定的时间,直到条件成立或者时间耗尽。
示例代码:
```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("http://www.example.com")
# 显式等待10秒钟,直到元素出现
elem = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myId"))
)
```
需要注意的是,显式等待需要导入`WebDriverWait`和`expected_conditions`,而隐式等待则直接通过`implicitly_wait`方法设置等待时间。此外,隐式等待的缺点是会增加整个测试的执行时间,而显式等待则对特定情况下的等待更为有效。