zoukankan      html  css  js  c++  java
  • watirwebdriver中的动态等待方法

    当你的测试页面包含一些动态的交互,比如有许多AJAX时,等待页面加载完毕往往是一件很头痛的事情。

    显示的等待

    Watir-Webdriver提供了4种方法使你的等待体验不再痛苦(将那些丑陋的sleep语句从代码中移除掉吧):

    • Watir::Wait.until { ... }: 等待,直到block中的语句为true
    • object.when_present.set: 当object出现时去操作objcet,这个例子里是调用了object的set方法,当object存在的时候
    • object.wait_until_present:等待,直到object出现
    • object.wait_while_present:等待,直到object消失

    默认情况下,上面的方法会等待30秒,不过你也可以在调用方法时传入1个参数来增加(减少)等待时间,如果需要的话。

    require 'watir-webdriver'
    b = Watir::Browser.start '17test.info/watir_wd_demo.php'
    b.select_list(:id => 'entry_1').wait_until_present
    b.text_field(:id => 'entry_0').when_present.set 'your name'
    b.button(:value => 'Submit').click
    b.button(:value => 'Submit').wait_while_present
    Watir::Wait.until { b.text.include? 'Thank you' }
    

      

    隐式的等待

    另一个选择是使用WebDriver的隐式等待。脚本每次在定位测试元素的时候总是会隐式的等待一段时间(在这段时间内如果元素无法被定位到,那么脚本就会抛出异常),你可以通过改变driver的属性来自行指定这个隐式的等待时间:

    require 'watir-webdriver'
    b = Watir::Browser.new
    b.driver.manage.timeouts.implicit_wait = 3 #3 秒
    

    注意:使用隐式等待会使得你的测试用例运行速度变慢并且当用例失败时其失败原因会更难定位。

  • 相关阅读:
    表达式求值
    火柴排队(归并)
    POJ 3254 压缩状态DP
    ZOJ 3471 压缩状态DP
    Boost IPC Persistence Of Interprocess Mechanisms 例子
    TCO 2014 Round 1A
    Google Code Jam 2014 Qualification 题解
    STL set_difference set_intersection set_union 操作
    b_zj_特征提取(map记录上一个特征运动的次数)
    b_zj_最大连续的相同字符子串的长度(双指针+找突破点)
  • 原文地址:https://www.cnblogs.com/nbkhic/p/3113492.html
Copyright © 2011-2022 走看看