RubyWebDriver·I设置等待时间
来源:互联网 发布:教育经济与管理 知乎 编辑:程序博客网 时间:2024/05/10 12:52
RubyWebDriver·I设置等待时间
web的自动化测试中,我们经常会遇到这样一种情况:点击1个按钮,页面上会弹出1个iframe,这时候脚本就需要去等待iframe加载完毕才能进行后续的操作。在这种情况下,我们一般的处理思路是等待被等待对象上的某个子元素出现,当这个子元素出现时我们就认为该对象已经加载完毕,代码可以继续往下执行了。
selenium-webdriver为我们提供了一个Wait类来完成类似的等待功能。
下面的html代码实现了这样的一种效果:点击click按钮5秒钟后,页面上会出现一个红色的div块。我们需要写一段自动化脚本去捕获这个出现的div,然后高亮之。
timeout.html
<html></html>
require 'selenium-webdriver'
dr = Selenium::WebDriver.for :firefox
#select_file = 'file:///'.concat File.expand_path(File.join(File.dirname(__FILE__), 'timeout.html'))
select_file = 'D:\rb\webdriver\html\timeout.html'
dr.navigate.to select_file
dr.find_element(:id => 'b').click
wait = Selenium::WebDriver::Wait.new({:timeout => 30})
#box = wait.until {dr.find_element(:css => '.red_box')}
box = wait.until {dr.find_element(:class_name => 'red_box')}
dr.execute_script('arguments[0].style.border = "10px solid yellow"', box) #div will be highlight
dr.quit
Wait类的构造方法Wait.new接收1个hash参数。上面代码中使用:timeout这个key值表示最长等待时间。
Wait类的until方法接收1个block代码块,如果代码块返回值不为true的话,该方法将一直等待直到达到最长等待时间为止。如果一旦代码块中的值为true了,则返回该代码块的返回值。 box = wait.until {dr.find_element(:css => '.red_box')}的作用就是等待class为red_box的div出现并返回该div对象。
进一步的思想下,如果某些页面在加载完成后会执行一些js函数,这些函数会延迟对dom树进行一些操作或者进行一些异步请求的处理,那么 webdriver目前是无法智能的等待这些函数执行完毕的,所以有时候就会出现页面在没有加载完毕的情况下(实际上dom已经加载完毕,只是异步请求或延迟函数正在执行),webdriver继续进行后续代码的执行情况。这时候我们就需要灵活的使用Wait类进行等待了。
- RubyWebDriver·I设置等待时间
- c++设置程序等待时间
- 设置DDL等待时间
- qtp 设置等待时间
- selenium2+python设置等待时间
- Linux设置开机等待时间
- selenium等待时间设置
- CentOS设置开机等待时间
- 设置TCP连接的等待时间
- 设置自动启动的等待时间
- android系统初始化等待时间设置
- selenium(4)-打印、设置等待时间
- grub2设置等待时间、设置修改密码
- apache中如何设置请求等待时间
- Ubuntu 14.04 开机引导菜单设置等待时间
- selenium设置元素发现超时等待时间-python
- Ubuntu 14.04 开机引导菜单设置等待时间
- selenium定位元素,合理设置等待时间
- ssh 使用新法:公网(合法 ip)用户访问内网(私有 ip)服务器(http,ftp,sshd,cvs...),内网的朋友不妨一看。
- Android 中 getApplicationContext()、this、getApplication()之间的区别
- 深入理解dp,px,以及density。
- 立体反转动画
- Clojure语言七:I/O
- RubyWebDriver·I设置等待时间
- ios线程
- uboot 学习 Makefile分析
- 云计算不只关于基础设施
- Android程序的安全系统
- linux10.4 64 位 安装 jdk1.6.0_30 步骤
- android权限大全
- OBJECT和EMBED标签
- android开发中的DOM和SAX使用的工厂模式分析