zoukankan      html  css  js  c++  java
  • Selenium入门20 等待时间

    自动化过程中有的页面元素加载慢或者需要等待特定条件执行后续步骤,此时需添加等待时间:

    1 time.sleep()  固定等待时间,需import time

    2 webdriver隐式等待 无需引入包

    driver.implicitly_wait(10) 最多等待10s,10s内监测到元素则继续执行,超过10s抛出超时异常。driver生命周期内都有效

    3 webdriver显示等待,需引包from selenium.webdriver.support.ui import WebDriverWait

    WebDriverWait(driver, 10).until()或until_not() 10s内每500ms监测一次条件是否成立,超过10s超时

    下面尝试未设置时间,设置固定时间,设置隐式等待和显示等待四种方式:

    1 未设置等待时间,抛出异常未找到元素

    #coding:utf-8
    #等待时间
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import
    dr = webdriver.Firefox()
    dr.get("https://www.baidu.com")
    dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
    #未等待
    dr.find_element_by_partial_link_text("Web Browser Automation").click()
    dr.quit()

    2 设置固定等待时间2s

    #coding:utf-8
    #等待时间
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import time
    dr = webdriver.Firefox()
    dr.get("https://www.baidu.com")
    dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
    #固定等待时间
    time.sleep(2)
    dr.find_element_by_partial_link_text("Web Browser Automation").click()
    dr.quit()

    3 隐式等待

    #coding:utf-8
    #等待时间
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    dr = webdriver.Firefox()
    dr.implicitly_wait(10) #设置页面元素的隐式等待时间10s
    dr.get("https://www.baidu.com")
    dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
    dr.find_element_by_partial_link_text("Web Browser Automation").click()
    dr.quit()

    4 显示等待

    #coding:utf-8
    #等待时间
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import  WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    dr = webdriver.Firefox()
    dr.get("https://www.baidu.com")
    dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
    #显示等待
    element = WebDriverWait(dr,10).until(
        EC.presence_of_element_located((By.PARTIAL_LINK_TEXT,'Web Browser Automation'))
    )
    element.click()
    dr.quit()

    webdriver提供了很多预期条件:

     the end!

  • 相关阅读:
    WPF之感触
    C# WinForm 给DataTable中指定位置添加列
    MyEclipse 8.6 download 官方下载地址
    将博客搬至CSDN
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
  • 原文地址:https://www.cnblogs.com/dinghanhua/p/9786108.html
Copyright © 2011-2022 走看看