2013-05-20 229 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