Ruby Selenium 快速入门 -- ruby 程序员篇

josh_sulin · 2014年07月08日 · 最后由 jy05874937 回复于 2018年07月17日 · 6876 次阅读

什么是 Selenium(只做初始解释,更详细的请看官网)

Selenium 是 ThoughtWorks 专门为 Web 应用程序编写的一个验收测试工具。据 Selenium 主页所说,与其他测试工具相比,使用 Selenium 的最大好处是:

1. Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 Windows、Linux 和 MacintoshAnd 上的 Internet Explorer、Mozilla 和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。

2. 使用 Selenium 和在浏览器中运行测试还有很多其他好处。下面是主要的两大好处:

  • 通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序。
  • 通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。

Selenium 能做什么

作为 Programmer 来说,写一段程序来帮助我们完成一系列繁琐的人工操作工作,是一件多么愉快的事。21 世纪是网络的时代,几乎所有的互联网操作都离不开浏览器,如果能让程序控制浏览器来为我们做一系列繁琐的工作,互联网的那些事儿不就变得简单了吗?太好了,想起都太好了。

Selenium 正是能为我们做这些事的工具。

如何安装

http://code.google.com/p/selenium/downloads/list?can=1&q= 在该网站上面下载所需的安装包。

1. Linux 环境

  • 操作系统一定要为桌面型 Linux 操作系统 (因为需要启浏览器)
  • 安装 java 环境 (JDK)
  • 点击链接下载:selenium-server-standalone-2.39.0.jar(现在最近版本己是 2.42, 线上布署的为 2.39)
  • 运行该 jar 包 (java -jar /root/code/selenium-server-standalone-2.39.0.jar -role hub -DPOOL_SIZE 512 -port 80 ) 后面跟的参数大家可以在官网查询,这里不做重复解释,特别需要注意的是:最好使用 root 来启动,因为 jar 包里面需要权限去执行其他操作。
  • 浏览器访问:http://127.0.0.1 就能看到 selenium server grid 的界面,表时 selenium 服务器己搭建好
  • 需要在 selenium server 上启动具体的 Selenium-RC 实例。(java -jar /root/selenium/selenium-server-standalone-2.39.0.jar -role node -hub http://localhost:80/grid/register -browser browserName=firefox,firefox_binary=/usr/bin/firefox,version=24.6.0 platform=LINUX -port 5553 -registerCycle=60000) 该命令执行后,就有运行的具体实例了。

*在 客户端 就可以通过 http://localhost:5553/wd/hub 来进行调用了。

2. Windows 环境

与 Linux 环境有很多相同点。由于 linux 环境下相比 Window 环境更稳定,所以一般在没有使用 Windows 环境的情况下,都是使用的 Linux 环境下面的 firefox,如果我们一定要使用Windows 环境,我们主要是使用它的 IE 浏览器。

如果一定要使用 Windows 环境,我们这里也说一下如何搭建

  • 安装 java 环境 (JDK)
  • 点击链接下载:selenium-server-standalone-2.39.0.jar(现在最近版本己是 2.42, 线上布署的为 2.39),IEDriverServer.exe(启动 IE 浏览器的 Driver)
  • 运行该 jar 包 (java -jar C:\selenium\selenium-server-standalone-2.39.0.jar -role hub -DPOOL_SIZE 512 -port 80) 后面跟的参数大家可以在官网查询。
  • 浏览器访问:http://127.0.0.1 就能看到 selenium server grid 的界面,表时 selenium 服务器己搭建好
  • 需要在 selenium server 上启动具体的 Selenium-RC 实例。(java -jar C:\selenium\selenium-server-standalone-2.39.0.jar -role node -hub http://localhost:80/register -browser browserName="internet explorer" -Dwebdriver.ie.driver=C:\selenium\IEDriverServer.exe -port 5553 naxInstance=1,platform=WINDOWS) 该命令执行后,就有运行的具体实例了
  • 现在 客户端 就可以通过 http://localhost:5553/wd/hub 来进行调用了。

与 Linux 环境的区别:

  • Selenium 默认使用的 Driver 是 firefox, 在 window 环境下面需要启动 IE,所以我们需要 IEDriverServer.exe
  • Window 环境下面,目前官网明确说明支持 XP,其他系统官方没有明确说明是否支持

Ruby 如何操作

1、所需 GEM 包

  • gem 'selenium-webdriver', '2.39.0' #2.39.0 该版本号一定要与 selenium-server-standalone-2.39.0.jar 这个 java 包的版本一致
  • gem 'selenium'
  • gem 'selenium-client'
  • gem 'capybara', '2.2.1'

以上 gem 包的作用请在 https://github.com/ 上面看文档

2、Selenium-RC 实例为:Firefox,初始化代码如下:

include Capybara::DSL   #我们使用Capybara来操作Selenium
Capybara.run_server = false
Capybara.default_driver = :selenium
Capybara.register_driver :selenium do |app|
  http_client.timeout = 1800
  Capybara::Selenium::Driver.new(app,
    :browser => :remote,
    :url => 'http://localhost:5553/wd/hub',   #我们上面为之非常努力配置的 Selenium-RC实例
    :desired_capabilities => :firefox  #其实只有这里不同
 )
end

初始化成功后,我们就可以使用 Capybara::DSL 里面封装的 selenium 操作浏览器的方法了。 比如:让浏览器访问一个网页,就只需要使用 visit 'http://www.baidu.com' 大家先看看这里面,非常的人性化的方法:https://github.com/jnicklas/capybara

3、Selenium-RC 实例为:IE, 初始化代码如下:

include Capybara::DSL   #我们使用Capybara来操作Selenium
Capybara.run_server = false
Capybara.default_driver = :selenium
Capybara.register_driver :selenium do |app|
  http_client = Selenium::WebDriver::Remote::Http::Default.new
  http_client.timeout = 1800
  Capybara::Selenium::Driver.new(app,
    :browser => :remote,
    :url => 'http://localhost:5553/wd/hub',   #我们上面为之非常努力配置的 Selenium-RC实例
    :desired_capabilities => :internet_explorer,  #其实只有这里不同
    :http_client => http_client
 )
end

初始化成功后,我们就可以使用 Capybara::DSL 里面封装的 selenium 操作浏览器的方法了。 比如:让浏览器访问一个网页,就只需要使用 visit 'http://www.baidu.com' 大家先看看这里面,非常的人性化的方法:https://github.com/jnicklas/capybara

支持分享! 如果有更详细的例子就更好了:)

这个排版…… 觉得 watir 也挺好用的

selenium 占用 CPU 过高有好的解决办法吗

需要 登录 后方可回复, 如果你还没有账号请 注册新账号