7

TestNG を使用して Eclipse でセレン rc テストを実行します。新しいブラウザ ページを開こうとするリンクがあります。この新しいページを選択して操作するにはどうすればよいですか? 私はこのコードを使用します:

selenium.selectWindow("name=NewPage");

ただし、ページが見つかりませんと表示されます。また、次のコードでページ ID またはタイトルを定義しようとしています。

String[] wins = selenium.getAllWindowIds();
    for (String s : wins)
         System.out.println("win: " + s); 

新しく開いたウィンドウを定義しません:

win: MainPage
win: 

使用するselenium.getAllWindowNames()と が得られwin: selenium_main_app_window win: selenium_blank65815ます。

私はこのコードを書いていますselenium.selectWindow("name=blank99157"); が、エラーが発生します -ERROR: Window does not exist. If this looks like a Selenium bug, make sure to read http://seleniumhq.org/docs/02_selenium_ide.html#alerts-popups-and-multiple-windows for potential workarounds.

4

4 に答える 4

7

ウィンドウには明らかに名前がないため、名前で選択することはできません。

  1. ウィンドウが JavaScript で開かれ、スクリプトを変更できる場合は、 に変更window.open("someUrl");してみてwindow.open("someUrl", "someName");ください。すると、セット名でウィンドウを選択できるようになります。のMDN docwindow.open()に関する詳細情報。

  2. <a href="someUrl" target="_blank">Selenium RC はリンク (リンクを新しいウィンドウで開く) をサポートしていません。<a>したがって、このタイプのリンクによってウィンドウが開かれる場合は、この要素を見つけてhref属性を取得し、呼び出す必要があります。

    selenium.openWindow(theFoundUrl, "theNewWindow");
    selenium.selectWindow("id=theNewWindow");
    
  3. イベント前またはイベント中に JavaScript を使用して開く場合はonload、呼び出す必要があります。

    selenium.openWindow("", "theNewWindow");
    selenium.selectWindow("id=theNewWindow");
    

    詳細については、バグSEL-339またはJavaDocsopenWindow()を参照してselectWindow()ください。

  4. ウィンドウが 2 つしかない場合、または最新のウィンドウを開きたい場合は、試すことができます

    selenium.selectPopup()

    明らかに、これが最も簡単な方法です。最初の非トップ ウィンドウが選択されるからです。したがって、最新のポップアップを選択したい場合にのみ役立ちます。

  5. 新しいウィンドウに一意のタイトルが付いている場合は、次のことができます

    selenium.selectPopup("Title of the window");
    

    またselenium.selectWindow("title=Title of the window");

  6. それ以外の場合は、正しい名前を取得するために反復処理を行う必要がありますselenium.getAllWindowNames()(Selenium は名前のないウィンドウの名前を作成します)。ただし、その名前は毎回変更されるため、テストケースにハードコードすることはできません。そのため、動的ロジックを作成する必要があります。

  7. これは気に入らないでしょう: WebDriver に行きます。そのような問題に対してはるかに耐性があるはずです。

于 2012-06-27T13:15:47.483 に答える
0

selenium.getAllWindowNames()、selenium.getAllWindowTitles()..を試してください。そのうちの1つは確実に機能します。

于 2012-06-27T09:01:15.407 に答える
0

正しいウィンドウ ID を使用していない可能性があります。

このリンクをチェックしてください。ここで答えが見つかるかもしれません。

これが役立つことを教えてください。

于 2012-06-27T08:02:07.720 に答える