显性等待:
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结构了。
(1)在线预览 直接点击文件,即可在线预览文件 (2)发送 点击操作-发送,即可将文档以轻推文件的方式发送到轻推联系人/群。 1)点击则进入轻推选人页面; 2)发送之后则以轻推文件的方式发到聊天页面; 3)发送对象为我的通讯录所有对象。 (3)收藏/取消收藏 点击收藏按钮,即可进行收藏,支持将我的空间或者团队空间、共享给我的文件或者文件夹进行收藏,方便查
本文向大家介绍针对Ruby的Selenium WebDriver安装指南,包括了针对Ruby的Selenium WebDriver安装指南的使用技巧和注意事项,需要的朋友参考一下 Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代。 不过事实却并非如此,现今原本早应退役的selenium 1.x却还是多数人坚定的
微博的数据模型构建好了,也编写了相关的视图文件,接下来我们的开发重点是,通过网页发布微博。本节,我们会初步实现动态流,第 12 章再完善。最后,和用户资源一样,我们还要实现在网页中删除微博的功能。 上述功能的实现和之前的方式有点不同,需要特别注意:微博资源相关的页面不通过微博控制器实现,而是通过资料页面和首页实现。因此微博控制器不需要 new 和 edit 动作,只需要 create 和 dest
主要内容:数组变维操作,数组转置操作,修改数组维度操作,连接与分割数组操作NumPy 中包含了一些处理数组的常用方法,大致可分为以下几类: 数组变维操作 数组转置操作 修改数组维度操作 连接与分割数组操作 下面分别对它们进行介绍。 数组变维操作 数组变维操作 函数名称 函数介绍 reshape 在不改变数组元素的条件下,修改数组的形状。 flat 返回是一个迭代器,可以用 for 循环遍历其中的每一个元素。 flatten 以一维数组的形式返回一份数组的副本,对副本的操
指定字符集建库 mysql> create database app default charset utf8; # 指定字符集建库 Query OK, 1 row affected (0.00 sec) mysql> show create database app\G #查看建库语句以及库的字符集 *************************** 1. row *************
5.1 Excel 基础操作 Range相关 Range 属性的一些 A1 样式引用 Range("A1") ' 单元格 A1 Range("A1:B5") ' 从单元格 A1 到单元格 B5 的区域 Range("C5:D9, G9:H16") ' 多块选定区域 ' 选中不关联的单元格,cells(2, 3)返回结果为:B3 Union(Range("