Selenium 中WebDriverWait()方法小计

WebDriverWait() 显示等待,语法格式如下:
WebDriverWait(self,driver,timeout,poll_frequency=POLL_FREQUENCY,ignored_exceptions=None).until(self,method,message=)
或者
WebDriverWait(self,driver,timeout,poll_frequency=POLL_FREQUENCY,ignored_exceptions=None).until_not(self,method,message=)
self, 函数本身,在实际使用的时候不需要输入
driver, webdriver的驱动程序,如(IE、FireFox、chrome、safari等)
timeout,超时时间,默认以秒为单位
poll_frequency,休眠时间(步长)的间隔,默认为0.5秒,即检测元素是否存在的频率
ignored_exceptions, 超时后的异常信息,默认情况下抛 “NoSuchElementException”,大家可以定义忽略的异常信息
WebDriverWait一般由until或until_not配合使用
until(method,message=”)调用该方法提供的驱动程序做为一个参数,直到返回值不为False
until_not(method,message=”)调用该方法提供的驱动程序做为一个参数,直到返回值为False

#lambda driver:driver.find_element_by_id('kw') 就等于下面的函数
def aaa(d):
     return d.find_element_by_id('kw')

如果找不到对应的id,则lambda会返回None。如果找到对应的元素则会有值返回。
例子如下:
①找到值:

# coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
def aaa(d):
     return d.find_element_by_id('kw')
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(3)
driver.get("https://www.baidu.com")
driver.find_element_by_id('kw').send_keys("Selenium")
bbb = aaa(driver)
print (type(bbb))#打印bbb的类型
print (bbb)#打印bbb的值
driver.quit()

bbb的打印结果如下:

<class 'selenium.webdriver.remote.webelement.WebElement'>
<selenium.webdriver.remote.webelement.WebElement (session="9ed7eee784a86f7381d6e471d8e6ed8e", element="0.8613195657289705-1")>

②找不到值

# coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
def aaa(d):
     return d.find_element_by_id('99')#随便改个元素值
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(3)
driver.get("https://www.baidu.com")
driver.find_element_by_id('kw').send_keys("Selenium")
bbb = aaa(driver)

print (bbb)#打印bbb的值
driver.quit()

返回结果:
Message: no such element: Unable to locate element: {“method”:”id”,”selector”:”99”}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebDriverWaitSelenium 的一个等待类,它可以让我们在等待页面元素加载完成后再执行下一步操作,避免出现元素还未加载完成就开始执行操作的情况。 下面是 WebDriverWait 的用法: 1. 导入 WebDriverWait: ```python from selenium.webdriver.support.ui import WebDriverWait ``` 2. 创建 WebDriverWait 对象,设置等待时间和轮询时间: ```python wait = WebDriverWait(driver, timeout, poll_frequency=0.5) ``` 其,driver 是 WebDriver 对象,timeout 是最长等待时间(单位为秒),poll_frequency 是轮询时间(单位为秒),默认值为 0.5 秒。 3. 使用 WebDriverWait 等待元素加载完成: ```python element = wait.until(EC.presence_of_element_located((By.ID, 'myElement'))) ``` 上面的代码会等待直到 ID 为 myElement 的元素加载完成,如果等待时间超过了 timeout,就会抛出 TimeoutException 异常。 其,EC 是 ExpectedConditions 类,By 是 By 类,这两个类都需要从 selenium.webdriver.support 包导入。presence_of_element_located 方法是 EC 类的一个静态方法,它表示等待元素出现在 DOM 。 4. 可以使用其他的 ExpectedConditions 方法等待元素,例如: ```python element = wait.until(EC.visibility_of_element_located((By.ID, 'myElement'))) ``` 上面的代码表示等待 ID 为 myElement 的元素在页面可见后再执行下一步操作。 5. 最后,记得在使用完 WebDriverWait 后要关闭浏览器: ```python driver.quit() ``` 以上就是 WebDriverWait 的基本用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值