selenium显式等待操作步骤
在Selenium中,有三种常见的等待方式:强制等待、隐式等待和显式等待。其中,显式等待是一种更为智能的等待方式,它允许开发者设置一个最长的等待时间,并在此期间频繁地检查某个条件是否满足,直到条件满足或者超过了设置的最长等待时间。以下是显式等待的基本操作步骤:
首先,我们需要导入Selenium的相关模块和类。通常情况下,我们会导入`webdriver`(例如`webdriver.Chrome()`)来创建一个浏览器实例,导入`By`来定义元素的定位方式,导入`expected_conditions`来使用Selenium预置的判断方法,以及导入`WebDriverWait`来进行显式等待。
```python
from
selenium
import
webdriver
from
selenium.webdriver.common.by
import
By
from
selenium.webdriver.support
import
expected_conditions
as
EC
from
selenium.webdriver.support.wait
import
WebDriverWait
```
在开始显式等待之前,我们需要创建一个浏览器实例,并通过调用`implicitly_wait()`方法来设置一个全局的隐式等待时间。这个隐式等待时间将在整个浏览器会话中起作用,为后续的所有元素查找提供一个默认的等待时间。
```python
driver
=
webdriver.Chrome()
driver.implicitly_wait(10)
```
接下来,我们可以使用`WebDriverWait`类来进行显式等待。我们需要传入浏览器实例、最长的等待时间和检查频率(默认为0.5秒)。
```python
wait
=
WebDriverWait(driver,
30,
0.2)
```
在这个例子中,`WebDriverWait`将在30秒内每0.2秒检查一次我们指定的条件是否满足。
`WebDriverWait`提供了`until()`和`until_not()`方法来定义我们的等待条件。我们可以传入一个方法,当这个方法的返回值为`True`时,`until()`方法认为条件已经满足,结束等待;当返回值为`False`时,`until_not()`方法认为条件尚未满足,继续等待。
```python
wait.until(EC.presence_of_element_located((By.ID,
'lg')))
```
在这个例子中,我们使用了`expected_conditions.presence_of_element_located()`方法作为我们的等待条件,这意味着我们将等待ID为'lg'的元素出现在页面上。
最后,我们可以尝试执行元素查找操作。如果在设置的最长等待时间内元素已经成功加载,那么这个操作将会成功;否则,将会在超时后抛出异常。
```python
try:
element
=
wait.until(EC.presence_of_element_located((By.ID,
'lg')))
print(element.get_attribute('href'))
except
Exception
as
e:
print(f"元素未找到:{e}")
```
在这个例子中,我们尝试获取ID为'lg'的元素的链接地址。如果元素在30秒内没有出现,那么将会捕获抛出的异常,并打印出相应的错误消息。
以上就是使用Selenium进行显式等待的基本操作步骤。显式等待是一种强大的工具,可以帮助我们在复杂的页面加载和渲染场景中编写更加健壮和可靠的自动化测试脚本。