览器
做自动化测试一般情况下我们都需要首先打开测试浏览器,浏览器开启后我们方可"命令"浏 览器去打开新页面,点击特定的链接,判断具体的逻辑等等。因此该操作为"万里长征的第 一步",必须给以重视。具体代码如下。需要注意的是如果使用 chrome 进行测试,那么必 须下载安装 chrome driver。
view plain
1. require 'rubygems' 2. require 'selenium-webdriver' 3. # 打开 firefox 4. dr = Selenium::WebDriver.for :firefox 5. dr = Selenium::WebDriver.for :ff 6. # 打开 ie 7. dr = Selenium::WebDriver.for :ie 8. dr = Selenium::WebDriver.for :internet_explorer 9. # 打开 chrome 10. dr = Selenium::WebDriver.for :chrome
如何打开 1 个具体的 url
打开浏览器后我们需要转到我们的测试 url。下面的代码可以达成这个目的。
view plain
1. require 'rubygems' 2. require 'selenium-webdriver' 3. dr = Selenium::WebDriver.for :firefox 4. # 使用 get 方法 5. dr.get url 6. # 使用 navigate 方法,然后再调用 to 方法 7. dr.navigate.to url
如何关闭浏览器
测试结束后往往需要关闭浏览器,下面的代码可以完成这个任务。
view plain
1. require 'rubygems' 2. require 'selenium-webdriver' 3. dr = Selenium::WebDriver.for :firefox 4. dr.get url 5. # 使用 quit 方法 6. dr.quit 7. # 使用 close 方法 8. dr.close
如何返回当前页面的 url
有时候我们需要返回当前测试页面的 url。 比如在使用 soso 进行搜索时, 当我们提交了搜索 请求后,soso 返回的 url 应该是包含我们所需要搜索的关键字的。 例如如果我们
搜索 webdriver,那么提交搜索请求后,页面应当转到 url 为 soso/q?pid=s.idx&;cid=s.idx&;w=webdriver 的页面,这时候我们取到这个页 面的 url,然后通过正则表达式去匹
配一下就能够得到我们所搜索的关键字了。具体代码如 下。
view plain
1. require 'rubygems' 2. require 'selenium-webdriver' 3. dr = Selenium::WebDriver.for :firefox 4. url = 'soso' 5. dr.navigate.to url 6. search_input = dr.find_element :id => 's_input' 7. search_input.send_keys 'webdriver' 8. search_input.submit 9. match = dr.current_url.match(/\b\w+$/) 10. key
word = match[0] if match
如何返回当前页面的 title
view plain
1. require 'rubygems' 2. require 'selenium-webdriver' 3. dr = Selenium::WebDriver.for :firefox 4. url = 'soso' 5. dr.navigate.to url 6. puts dr.title
其他方法
? ? ? ?
window_handles : 返回当前所有打开浏览器的窗口句柄 window_handle:返回当前的浏览器的窗口句柄 page_source : 返回当前页面的源码 visible? : 当前浏览器是否可见,并不保证支持所有浏览器
深入讨论
操作浏览器的方法主要封装在 lib\selenium\webdriver\common\driver.rb 文件中。 该文件定义了 Selenium::WebDriver::Driver 类。 我们启动浏览器就是调用这个类的 for 方法。
(3)如何执行一段 js 脚本
有时候在进行自动化测试时需要在页面上执行一段 js 脚本,这个时候就需要用到 execute_script 方法了。
view plain
1. require 'rubygems' 2. require 'selenium-webdriver' 3. dr = Selenium::WebDriver.for :ie 4. url = 'soso' 5. dr.navigate.to url 6. sleep 3 7. js = <
上面的代码打开了 SoSo 的首页,并高亮显示了 id 为"tb"的 div。 下面的例子演示了在打开 QQ 首页的时候如何自动 focus 到页面上的 soso 搜索框
view plain
1. require 'rubygems' 2. require 'selenium-webdriver' 3. dr = Selenium::WebDriver.for :ie 4. url = 'qq' 5. dr.navigate.to url 6. sleep 3 7. js = < 下一讲的内容是