美文网首页
webdriver 中的三种等待方式

webdriver 中的三种等待方式

作者: 编程猫猫 | 来源:发表于2019-12-17 14:58 被阅读0次

    一、强制等待

      from selenium import webdriver
      from time import sleep
    
       driver = webdriver.Chrome()
       driver.get('https://www.baidu.com/')
       sleep(3)#强制等待3s之后再执行下一步
       print driver.current_url
       driver.quit()
    

    强制等待,无论浏览器是否加载完成都要等待3s,3s之后再执行下一步。
    不过不建议使用此等待方式,太死板,严重影响程序执行效率

    二、隐式等待

        from selenium import webdriver
    
        driver = webdriver.Chrome()
        driver.get('https://www.baidu.com/')
        driver.implicitly_wait(30)  # 隐性等待,最长等30秒
        print driver.current_url
        driver.quit()
    

    隐形等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步;
    否则一直等到时间截止,然后执行下一步。

    不过有个弊端那就是程序会一直等待整个页面加载完成,才会执行下一步。

    注意:隐性等待对整个driver的周期都起作用,所以只要设置一次即可。

    三、显式等待

    程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException。

        from selenium import webdriver
        from selenium.webdriver.support.wait import WebDriverWait
        from selenium.webdriver.support import expected_conditions as EC
        from selenium.webdriver.common.by import By
    
        driver = webdriver.Chrome()
        
        driver.implicitly_wait(10)  # 隐性等待和显性等待可以同时用,但要注意:等待的最长时间取两者之中的大者
        driver.get('https://www.baidu.com/')
        locator = (By.LINK_TEXT, 'hao123')
          try:
              WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))
              print driver.find_element_by_link_text('hao123').get_attribute('href')
          finally:
              driver.close()
    

    参考博客

    相关文章

      网友评论

          本文标题:webdriver 中的三种等待方式

          本文链接:https://www.haomeiwen.com/subject/ibrsnctx.html