Ruby下WebDriver的相关操作指南

显性等待:

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结构了。

(0)

相关推荐

  • Ruby下WebDriver的相关操作指南

    显性等待: 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在内部使

  • 关于pygame自定义窗口创建及相关操作指南

    目录 1.首先,我们需要导入几个相关模块 2,初始化游戏 3,创建窗口及标题 4,创建主循环 附:pygame 窗口无法正常关闭的解决方法 总结 1.首先,我们需要导入几个相关模块 import pygame import sys from pygame.locals import * 2,初始化游戏 pygame.init()#是一定要添加的 与其对应的是pygame.quit(),关闭pygame. 3,创建窗口及标题 screen = pygame.display.set_mode(siz

  • ubuntu环境下的php相关路径与修改方法

    ubuntu环境下的php相关的路径 php路径 /usr/bin/php phpize5 /usr/bin/phpize5 php5-fpm /usr/sbin/php5-fpm php所有的配置文件 /etc/php5/fpm 重启php-fpm sudo kill -USR2 `cat /var/run/php5-fpm.pid` ubuntu中更改apache2中php的开发目录路径 安装好php和apache后, 如何将开发的目录设置成想要的呢 默认的开发目录地址:/var/www 更

  • linux系统下用户管理相关介绍

    目录 一.用户及用户组存在的意义 1)用户存在的意义 2)用户组存在的意义 二.用户及用户组在系统中存在的方式 三.用户涉及到的系统配置文件 /etc/shadow        用户认证信息文件 四.用户相关操作 1)用户和用户组建立及删除 2)用户和用户组的信息管理 五.用户权力下放 六.文件权限查看和读取 一.用户及用户组存在的意义 1)用户存在的意义 系统的资源是有限的,如何合理分配系统资源? 1.身份 account 2.授权 author 3.认证 auth 以上3个 'a' 称为3

  • 详解redis在服务器linux下启动的相关命令(安装和配置)

    1.在redis官网下载安装包 2.将安装包上传到FianlShell 3.建好对应文件路径,切换至安装包所在文件夹下 输入命令:(里面的路径根据实际情况进行改变) tar -zvxf redis-6.0.5.tar.gz -C /urs/local/redis 4.编译:(需要使用gcc,如果linux尚未安装gcc需要先进行安装) 使用命令: yum install gcc-c++ 5.然后进入redis-6.0.5,然后执行make 6.然后输入安装命令: make PREFIX=/urs

  • DOS下常用的相关网络命令总结

    在DOS下的Microsoft Network Client和Windows 9x的DOS窗口等环境中,有许多很有用的但不包含在DOS自带的命令中的网络命令.那么,有哪些这样的命令呢?下面将它们中常用的命令介绍一下. Arp 显示和修改"地址解析协议"(ARP) 所使用的到以太网的 IP 或令牌环物理地址翻译表.该命令只有在安装了 TCP/IP 协议之后才可用. arp -a [inet_addr] [-N [if_addr]] arp -d inet_addr [if_addr] a

  • DOS下常用网络相关命令解释

    Arp 显示和修改"地址解析协议"(ARP) 所使用的到以太网的 IP 或令牌环物理地址翻译表.该命令只有在安装了 TCP/IP 协议之后才可用. arp -a [inet_addr] [-N [if_addr]] arp -d inet_addr [if_addr] arp -s inet_addr ether_addr [if_addr] 参数 -a 通过询问 TCP/IP 显示当前 ARP 项.如果指定了 inet_addr,则只显示指定计算机的 IP 和物理地址. -g 与 -

  • Linux系统下ssh的相关配置详细解析

    ssh是大家常用的登录linux服务器的方式,但是为了安全考虑,有时候我们需要针对ssh做一些特殊处理,本文记录笔者曾经做过的一些修改,供大家参考. 一.修改ssh端口 ssh默认为22端口,如果需要修改成其它端口,则可以修改/etc/ssh/sshd_config文件,将#Port 22 注释去掉,修改成需要的端口(比如8888),然后使用如下命令重启ssh服务service sshd restart 二.关闭root用户远程ssh登录的权限 如果不希望root用户远程登录,可以按照如下修改:

  • 编写Ruby脚本来对Twitter用户的数据进行深度挖掘

    Twitter以及一些API 尽管早期的网络涉及的是人-机器的交互,但现在的网络已涉及机器-机器之间的交互,这种交互是使用web服务来支持的.大部分受欢迎的网站都有这样的服务存在--从各种各样的Google服务到LinkedIn.Facebook和Twitter等.通过web服务创建的API,外部的应用可以查询或是操纵网站上的内容. web服务可以使用多种方式来实现.目前最流行的做法之一是表述性状态转移(Representational State Transfe, REST).REST的一种实

  • 举例讲解Ruby中require的使用方法

    同一目录下的文件,如/usr/local/ruby/foo.rb与/usr/local/ruby/bar.rb两个文件. 如果直接在foo.rb中 require 'bar' 执行时会报找不到bar.rb错误. 这是因为运行 /home/oldsong$ ruby /usr/local/ruby/foo.rb 时会在ruby安装的lib目录和/home/oldsong/目录下查找bar.rb.而不会去rb文件的目录/usr/local/ruby/下查找. 所以除引用系统rb外,require中不

随机推荐