selenium等待:sleep、隐式等待、显示等待

selenium等待:sleep、隐式等待、显示等待

sleep() 强制等待

这个是利用python自带的time库中的属性 
sleep() 以秒为单位 是固定的休眠时间 会影响到脚本运行速度
代码展示: 可以直观感受到 屏幕是在休眠五秒后再执行的下一步操作。
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from time import sleep
    driver = webdriver.Chrome()
    '''强制等待'''
    driver.get('https://www.baidu.com')
    driver.find_element(By.ID,('kw')).send_keys('等待')
    sleep(5)
    driver.find_element(By.ID,('su')).click()
    driver.quit()

隐式等待

implicitly_wait()方法用来等待页面加载完成(直观的就是浏览器tab页上的小圈圈转完),再去dom中查找元素 若是在规定时间内查找不到 就抛出异常 若是再规定时间内找到元素 就执行下一句 例如:implicitly_wait(10) 十秒中内能加载出所需要的页面元素就继续执行下一步 若是不能加载出那就报出异常
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    browser = webdriver.Chrome()
    # 设置隐式等待时间为10秒
    browser.implicitly_wait(10)
    browser.get('https://www.baidu.com/')
    browser.find_element(By.CSS_SELECTOR, '#kw').send_keys('implicitly_wait')
    browser.find_element(By.CSS_SELECTOR, '#su').click()
    print('访问成功',browser.title)
    browser.quit()

显示等待:

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None) 显示等待必须在每个需要等待的元素前面进行声明。在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None).until/until_not(self, method, message: str = "")
 driver:webdriver实例对象
 timeout:最长超时时间,以秒为单位
 poll_frequency:检测的间隔步长,默认为0.5s。(可不填)
 ignored_exceptions:超时后抛出的异常信息,默认抛出NoSuchElementExeception异常。(可不填
 until():条件成立返回True,等待结束,如果超时,抛出TimeoutException异常。
 until_not():条件不成立返回True,等待结束,如果超时,抛出TimeoutException异常。
 method:每次轮询时执行的等待条件。
 message:轮询超时后打印的信息。(可不填)
    from selenium import webdriver
    #显式等待模块
    from selenium.webdriver.support.ui import WebDriverWait
    #显式等待条件
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    # 强制等待
    from time import sleep    
    browser.get('https://www.baidu.com/')
    #显示等待
    #browser是webdriver实例对象,10是最长等待时间,0.5是每0.5秒去查询对应的元素。until后面跟的等待具体件,EC是判断        条件,检查元素是否存在于页面的 DOM 上。
    Web_Wait=WebDriverWait(browser,10,1 ).until(EC.presence_of_element_located((By.ID,'kw')))
    Web_Wait.send_keys('WebDriverWait')
    # 强制等待可以看一下显示等待的一个效果
    sleep(5)
    browser.quit()
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值