2013-05-20 81 views
1

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

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. 

这将不胜感激,如果有人可以设置直接记录如何使用此。

回答

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/ 

这将有以下行为:

  • 加载页面
  • 获取的窗口句柄当前窗口
  • 以打开一个新窗口的动作
  • 获取的窗口句柄新窗口
  • 根据需要在窗口之间切换
+0

作为一个方面说明,对于我的预期应用程序,我没有最终使用此功能,因为我希望使用比支持的窗口更多的功能。 – Seanny123

0

我不知道硒,但根据你自己的问题,该方法的名称是open_window而不是openWindow

+0

我已更正它,但unfo好在似乎无法找到rdoc,因此我可以链接到我参考的内容。 – Seanny123

+0

[本文档](https://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/Client/GeneratedDriver.html#open_window-instance_method)似乎暗示该方法实际上是open_window()。无论如何,我已经尝试过都无济于事。 – Seanny123

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") 
+0

我曾考虑过,但这也意味着我必须创建一个管理我的各种浏览器实例的方法,这看起来有点像矫枉过正。但是,如果没有其他人在一周内提出解决方案,我会将您的答案标记为正确。 – Seanny123

+0

原来,制作管理浏览器实例的方法是非常必要的。 Selenium并没有自行跟踪这些事情,也不应该这样做,因为这超出了它的使用范围。 – Seanny123