用Ruby打开一个新窗口

时间:2013-05-20 09:16:56

标签: ruby selenium-webdriver

我想使用我在rdoc中看到的openWindow()方法打开一个新窗口,但每当我尝试运行我的代码时,我都被告知该方法不存在。

require 'rubygems'
require 'selenium-webdriver'
$browser = Selenium::WebDriver.for :firefox #I've tried chrome too to the same effect
$browser.navigate.to("http://google.com")
$browser.openWindow("http://cnet.com","ASDF") #This doesn't work.
$browser.open_window("http://cnet.com","ASDF") #This doesn't work either.

如果有人能够直接记录如何使用此记录,我们将不胜感激。

3 个答案:

答案 0 :(得分:2)

详见this article,使用API​​的正确方法是:

  @driver.get 'http://the-internet.herokuapp.com/windows'
  main_window = @driver.window_handle
  @driver.find_element(css: '.example a').click
  windows = @driver.window_handles
  windows.each do |window|
    if main_window != window
      @new_window = window
    end
  end
  @driver.switch_to.window(main_window)
  @driver.title.should_not =~ /New Window/
  @driver.switch_to.window(@new_window)
  @driver.title.should =~ /New Window/

具有以下行为:

  • 加载页面
  • 获取当前窗口的窗口句柄
  • 采取打开新窗口的操作
  • 获取新窗口的窗口句柄
  • 根据需要在窗口之间切换

答案 1 :(得分:1)

我不确定你是否可以使用     openWindow方法但是

要打开新窗口,您必须再次打开firefox浏览器的新实例

所以,尝试做类似

的事情
$browser = Selenium::WebDriver.for :firefox 
$browser.navigate.to("http://google.com")

$browser_new = Selenium::WebDriver.for :firefox 
$browser_new.goto("http://cnet.com")

答案 2 :(得分:0)

我不了解Selenium,但根据您自己的问题,该方法的名称为open_window而不是openWindow