selenium等待
时间: 2023-08-31 14:08:17 浏览: 46
Selenium提供了两种等待方式:隐式等待和显式等待。
隐式等待是一次设置,全局生效。它会在一个时间段内等待,如果网页在规定时间内加载完成,则执行下一步操作,否则等待时间结束后执行下一步。需要注意的是,隐式等待对整个driver的生命周期都起作用,所以只需要设置一次即可。不建议将隐式等待当作固定等待使用,也不需要每次需要等待时都写一次隐式等待。
显式等待是使用WebDriverWait来实现的。它是根据设置的条件来等待元素出现或满足条件后执行下一步操作。使用显式等待需要导入相应的模块和等待条件。例如,通过导入selenium.webdriver.support.ui中的WebDriverWait模块和selenium.webdriver.support中的expected_conditions模块,就可以使用显式等待功能。
下面是一个使用显式等待的示例代码:
```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
wd = webdriver.Chrome()
wd.get('http://www.baidu.com')
# 使用显式等待等待元素出现
login_btn = WebDriverWait(wd, 10, 0.5).until(EC.presence_of_element_located((By.ID, "s-top-loginbtn")))
# 点击元素
login_btn.click()
```
以上代码中,先创建一个WebDriverWait对象,设置最长等待时间为10秒,每0.5秒查询一次元素。然后使用until方法判断元素是否出现,直到元素出现或超过最长等待时间为止。然后可以执行下一步操作。
总结来说,隐式等待是无条件等待,等待一段时间后执行下一步操作,而显式等待是根据设置的条件等待元素出现或满足条件后执行下一步操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [自动化测试系列-Selenium三种等待详解](https://blog.csdn.net/caixiangting/article/details/125964137)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [selenium的三种等待方式(显示等待,隐式等待,强制等待)简单了解与总结](https://blog.csdn.net/qq_44728587/article/details/122997412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]