Ruby下WebDriver的相关操作指南

所属分类: 脚本专栏 / ruby专题 阅读数: 2203
收藏 0 赞 0 分享

显性等待:
 

wait = Selenium::WebDriver::Wait.new(:timeout => 3)
wait.until { driver.find_element(:id => "cheese").displayed? }

 

隐性等待:
 

driver = Selenium::WebDriver.for :firefox
driver.manage.timeouts.implicit_wait = 3 # seconds

 内部超时:

WebDriver在内部使用http协议与各种driver发生交互联系。默认情况下,Ruby标准库中的Net::HTTP协议使用时有60秒默认超时时间,如果你调用Driver去加载一个超过60秒时间的页面,你会看到一个来自于Net:HTTP的超时错误。你可以在启动浏览器前手动配置超时时间。

 

client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 120 # seconds
driver = Selenium::WebDriver.for(:remote, :http_client => client)

 ruby webdriver 启动firefox driver时,加载firebug的扩展

在官方wiki上看到
Adding an extension
It's often useful to have Firebug available in the Firefox instance launched by WebDriver:
 

profile = Selenium::WebDriver::Firefox::Profile.new
profile.add_extension("/path/to/firebug.xpi")
driver = Selenium::WebDriver.for :firefox, :profile => profile

 

 于是乎自己尝试了下,但是呢每次都是提示我firebug.xpi找不到

今天有空倒腾了,问题解决了
其实是之前的理解错了,因为dr =Selenium::WebDriver.for:ff
启动ff时,都是初始化一个最简单的profile,里面不带有firebug插件的,也就是说,哪怕我们原先在firefox上面安装了firebug,也是启动不了的,所以当我们需要使用firebug时,才需要加载一个firebug的扩展
 

profile.add_extension("/path/to/firebug.xpi")

 至于“/path/to/firebug.xpi”就是firebug.xpi的存放路径了,我们可以去网上下载一个firebug.xpi(对应版本, 我的ff是14,可以使用firebug-1.10.4.xpi,最好使用非firefox浏览器下载,不然提示你直接安装到firefox)
我们可以直接把firefox.xpi存放在我们脚本所存放的路径,相对路径和绝对路径都可以
举个百度的例子
 

require 'selenium-webdriver'
 
#dr = Selenium::WebDriver.for :ff
profile = Selenium::WebDriver::Firefox::Profile.new
profile.add_extension("path/to/firebug-1.10.4.xpi") <font color="DarkOrchid">#firefox-1.10.4.xpi存放在与脚本同级的path/to下面</font>
dr = Selenium::WebDriver.for :firefox, :profile => profile
dr.get "http://www.baidu.com"

 这样子当我们需要查看dom结构时,我们就可以直接在打开的测试页面上调试啦,不用去新开个firefox去查看dom结构了。

更多精彩内容其他人还在看

Rails link_to 详解

想学习rauks link_to的朋友可以参考下面的例子。
收藏 0 赞 0 分享

ruby 小脚本搞定CVS服务器更换后checkout下来的工程迁移

CVS换了新的服务器,原来的工程需要更改Server配置,这个东东手工做起来 可是个体力活,写了一个脚本分发下来。
收藏 0 赞 0 分享

Ruby 魔法 学习笔记之一

Ruby的许多动态特性,让Ruby具有很多魔法,这个魔法足以让你来定制你自己的语言DSL, Rails就是Ruby在Web的DSL.
收藏 0 赞 0 分享

Ruby self在不同环境的含义

Ruby的self在不同的环境中有不同的含义,这点和java的this不同,原因是java实际上只有一种环境--在class的实例方法定义中使用,代表访问这个方法参数自动传进的那个对象。
收藏 0 赞 0 分享

ruby 程序的执行顺序

ruby程序的执行是顺序执行的,他是从脚本的第一行执行到最后一行,但是实际执行顺序是
收藏 0 赞 0 分享

ruby on rails 代码技巧

对于rails的一些使用技巧的代码
收藏 0 赞 0 分享

ruby 标准类型总结

诠释分析了ruby的标准类型,学习ruby的朋友,需要了解和掌握的。
收藏 0 赞 0 分享

ruby 去掉文件里重复的行

以前合并后台字典时,有重复的都是用vbs去,最近又看了一天的ruby,想起来写一下,没想到代码如此精简
收藏 0 赞 0 分享

Ruby rails 页面跳转(render和redirect_to)

今天在做R.R.log的时候发现个问题,在修改密码的时候如果没有通过校验,没有显示校验错误的信息。
收藏 0 赞 0 分享

Ruby 取得指定月日期数的方法

取得指定月日期数的Ruby代码
收藏 0 赞 0 分享
查看更多