Title

6、Selenium常用操作之时间等待

时间等待操作

    • 为什么要增加时间等待?
      • 模拟用户真实的思考时间
      • 避免页面元素还未加载完成就进行元素定位,导致定位失败
    • 时间等待分为三种,包括:强制等待、显式等待、隐式等待
      • 强制等待:使用python中time模块的sleep()方法
        • 导入time模块,调用sleep()方法进行强制等待
        • # 方式一
          from time import sleep
          # 强制等待3秒
          sleep(3)
          
          
          # 方式二
          import time
          # 强制等待4秒
          time.sleep(4)
      • 显式等待:selenium为我们提供的WebDriverWait类
        • 使用场景:等待页面加载完成,找到某个条件发生后在继续执行后续代码,如果超出设置的超时时间仍然为找到这个条件就会抛出异常
        • 使用方式
          • 导包:from selenium.webdriver.support.ui import WebDriverWait
          • 格式:WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
            • driver:浏览器驱动
            • timeout:超时时间
            • poll_frequency:检测条件频率
            • ignored_exceptions:超时异常,默认异常是NoSuchElementException,TimeOutException
            • from selenium import webdriver
              from selenium.webdriver.support.ui import WebDriverWait
              
              driver = webdriver.Chrome()
              
              driver.get('https://www.baidu.com')
              
              # 打开百度网页后设置显示等待,超时时间时10秒,每秒钟定位一次元素,直到定位到id值时kw的元素就结束等待
              bd_input = WebDriverWait(driver,10,1).until(lambda x:x.find_element_by_id('kw').is_display())  
    • 隐式等待:selenium提供的implicitly_wait()方法,使用不需要导包
      • 使用场景:设置一个等待时间范围,这个等待时间时不固定的,但是最长等待时间就是设置的最大值,隐式等待也称为智能等待,它等待一个元素被发现或者一个命令完成(等待页面整体加载完成),超时也会抛出异常  
      • 使用方式:一般在打开页面的时候声明一次隐式等待即可
      • 格式:driver.implicitly_wait()
      • from selenium import webdriver
        
        driver = webdriver.Chrome()
        
        driver.get('https://www.baidu.com')
        
        # 设置隐式等待,超市时间30
        driver.implicitly_wait(30)

         

posted @ 2023-04-02 20:15  huayaofan  阅读(16)  评论(0)    收藏  举报