2012-01-12 11 views
3

私は、ユーザが2つの可能なブラウザウィンドウ/タブを見ることができるアプリを持っています。Capybara/Seleniumにフォーカスを当てずにウィンドウのタイトルを取得する

ウィンドウ2にユーザーがいて、ウィンドウ1でイベントが発生した場合、JQueryのタイトルアラート(https://github.com/heyman/jquery-titlealert)を使用してタイトルバーのテキストを変更しますウィンドウ1で何かが起こっていることを通知します。ウィンドウ1がフォーカスされるまでタイトルテキストの変更が点滅します。

これはすべて正常に動作します。しかし、私はcapybaraとseleniumを使ってこれを統合テストしたいと思います。興味深い問題が発生しました。

 page.driver.browser.switch_to.window(page.driver.browser.window_handles.last) 

私はそれは、テキストが変更されたということをテストするために焦点の合っていないウィンドウのテキストを取得できるようにしたい:私は簡単のようなものを使用してウィンドウを切り替えることができますが。誰も方法を知っていますか:

  1. すべてのウィンドウのタイトルを取得しますか?
  2. ウィンドウのプロパティを切り替えることなくそれを調べる/それに焦点を当てるか?
  3. 他の方法でこの問題に近づけることができますか?

ありがとうございました!

答えて

2

WebDriverBackedSeleniumには、GetAllWindowTitles()が使用できます。 Rubyでは最新のバージョン2.19で動作するはずです。 C#の次の例は動作します。

IWebDriver driver = new FirefoxDriver(); 
ISelenium browser = new WebDriverBackedSelenium(driver, driver.Url); 
browser.Start(); 

// open a test page and some popup windows 
browser.Open(@"Test.html"); // open the main page which has title 'My Main Window' 
browser.Click("btnPop1"); // open a popup window with title 'My Popup 1' 
browser.Click("btnPop2"); // open a popup window with title 'My Popup 2' 

string[] titles = browser.GetAllWindowTitles(); 
foreach (string title in titles) 
{ 
    Console.WriteLine(title); 
} 
browser.Close(); 
Console.ReadLine(); 

出力が期待通りである:答えのための

My Main Window 
My Popup 1 
My Popup 2 
+0

ありがとう!しかし、私はWebDriverBackedSeleniumを扱うことができないか、または2.19にアップグレードした後でさえ、Capybaraを使ってRailsプロジェクトからこれを使うようにSeleniumを設定することはできません。私はまだドキュメントやRailsコミュニティーのドキュメントは見ていませんが、私は探しています。 –

+0

RailsやCapybaraについてよく分かりませんが、私はそれがうまくいくと思った理由は、[Selenium release 「WebdriverBackedSelenium」がJava以外のサポートされている言語で使用できるようになりました(http://seleniumhq.wordpress.com/2012/02/08/announcing-selenium-2-19-the-prancing-unicorn-release/) 。 – shamp00

+0

あなたは間違いなく私の質問に答えました。今はRoR実装の詳細を理解するのは私の責任です。ありがとう :) –

関連する問題