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!

  • 相关阅读:
    JVM基础
    JVM基础
    python相关
    charles 的配置与使用
    大型缓存架构实战
    redis环境搭建
    多线程与并发 | 线程池
    JVM | 内存溢出和解决方案
    读书笔记 | Mysql是怎样运行的
    读书笔记 | Java并发编程实战
  • 原文地址:https://www.cnblogs.com/dinghanhua/p/9786108.html
Copyright © 2011-2022 走看看