zoukankan      html  css  js  c++  java
  • Selenium 应用 WebDriverWait 和 expected_conditions(待验证)

    收藏在我的收藏看不到,只能copy了,转载至http://www.cnblogs.com/yicaifeitian/p/4749149.html

    哈哈,我始终相信贴出来总会有人看。WebDriverWait 类位于selenium.webdriver.support.ui下面的例子很简单,

    Example:
    from selenium.webdriver.support.ui import WebDriverWait 
    
    element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id("someId")) 
    
    is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)). 
    
                     until_not(lambda x: x.find_element_by_id("someId").is_displayed())
    

     

    WebDriverWait 里面主要有两个方法,一个是until和until_not

    那么我们可以这样用:
    WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id("某个按钮")).click()

      意思就是在10秒内等待某个按钮被定位到,咱们再去点击。就是每隔0.5秒内调用一下until里面的表达式或者方法函数,要么10秒内表达式执行成功,要么10秒后抛出超时异常。

    哈哈,我相信这个py文件大家一看就能懂。这无非就是一些预期条件。

    结合上面的WebDriverWait,我们可以这么用:

    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    '''
    10秒钟等待浏览器弹出的对话框,如果出现,就点击确定按钮
    '''
    WebDriverWait(chromedriver,10).until(EC.alert_is_present()).accept()
    

     我们的自动化脚本跑得快慢或者出现异常,很大程度上取决于我们设定的等待时间,如果你还是习惯于time.sleep(5)这种方式的话,这将会浪费很多时间。

  • 相关阅读:
    4种排序实践
    redis 应用场景和数据类型
    建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C
    分布式线程安全(redis、zookeeper、数据库)
    [专项]3道改错题
    kafka 业务埋点
    spring boot集成kafka
    kafka本地调试
    C语言 gets()和scanf()函数的区别
    EOF
  • 原文地址:https://www.cnblogs.com/alamZ/p/6963589.html
Copyright © 2011-2022 走看看