1

私のアプリケーションには管理者アカウントがあり、テストはその中で行われました。

このアカウントには、ログインに使用する「通常の」ユーザー用のハイパーリンクがあります。次に例を示します。

ワン http://dmplanning-stage.herokuapp.com/p/7Fimn1FRs1WZe5xmFTUA
ツー http://dmplanning-stage.herokuapp.com/p/FRs1WZe7Fimn15TUAxmF
スリーhttp://dmplanning-stage.herokuapp.com/p/mFTUA7Fimn1FRs1WZe5x

これらのリンクは、テスト スイートを実行するたびに生成され、ID は異なります。

これらのユーザーとそのログイン ハイパーリンクを一覧表示するページのハイパーリンクを見つけてクリックするテストを作成しました。テストが実行され、Selenium によってブラウザに新しいウィンドウが表示されますが、ログインして続行できるようにするにはどうすればよいですか?

より挑戦的にするために、他のウィンドウには空のタイトルがあります。

プログラマーにタイトルを追加してもらうことはできますが、時間がかかります。それを使用して/使用せずに、他のウィンドウを識別して切り替える方法はありますか?

4

2 に答える 2

2

Selenium IDE を使用していると仮定しています。Seleniumリファレンスから


selectPopUp ( windowID )

ポップアップ ウィンドウを選択するプロセスを簡素化します (また、selectWindow() が既に提供している以上の機能は提供しません)。

  • windowID が指定されていないか、「null」が指定されている場合は、最初の非トップ ウィンドウが選択されます。一番上のウィンドウは、 windowID を指定せずに selectWindow() によって選択されるウィンドウです。これは、複数のポップアップ ウィンドウが表示されている場合は使用しないでください。

  • それ以外の場合、windowID を次の順序で考慮してウィンドウが検索されます。 1) window.open() に指定されたウィンドウの「名前」。2) ウィンドウへの参照である JavaScript 変数。3) ウィンドウのタイトル。これは、 selectWindow によって実行されるのと同じ順序付きルックアップです。


selectWindow ( windowID )

ウィンドウ ロケータを使用してポップアップ ウィンドウを選択します。ポップアップ ウィンドウが選択されると、すべてのコマンドがそのウィンドウに移動します。メイン ウィンドウを再度選択するには、null をターゲットとして使用します。ウィンドウ ロケーターは、ウィンドウ オブジェクトを指定するさまざまな方法を提供します。タイトル、内部 JavaScript の「名前」、または JavaScript 変数です。

  • title = My Special Window : タイトル バーに表示されるテキストを使用してウィンドウを検索します。気をつけて; 2 つのウィンドウで同じタイトルを共有できます。その場合、このロケーターは 1 つだけを選択します。

  • name = myWindow : 内部 JavaScript の「name」プロパティを使用してウィンドウを検索します。これは、JavaScript メソッド window.open(url, windowName, windowFeatures, replaceFlag) (Selenium がインターセプト) に渡される 2 番目のパラメーター「windowName」です。

  • var = variableName : 一部のポップアップ ウィンドウは無名 (匿名) ですが、現在のアプリケーション ウィンドウの JavaScript 変数名に関連付けられています (例: "window.foo = window.open(url);")。そのような場合、「var=foo」を使用してウィンドウを開くことができます。

selectWindow開いている新しいウィンドウの名前を取得できれば理想的です。

操作したいウィンドウの名前が分からない場合は、window.open で作成された (したがって Selenium によってインターセプトされた) ウィンドウの名前を特定する Selenium ログ メッセージを参照してください。各ウィンドウを開くと、次のようなメッセージが表示されます。

debug: window.open call intercepted; window ID (which you can use with selectWindow()) is "myNewWindow"

場合によっては、Selenium が wi​​ndow.open の呼び出しをインターセプトできないことがあります (たとえば、"onLoad" イベントの最中または前に呼び出しが発生した場合)。(これはバグ SEL-339 です。) そのような場合、次のように空の (空白の) URL を使用して、Selenium openWindow コマンドを使用して、開いているウィンドウの名前を Selenium に認識させることができます: openWindow("", "myFunnyWindow") .

于 2012-12-07T09:15:39.127 に答える
1

ウィンドウハンドルを使用して、新しいウィンドウに切り替えることができます。なんかなんか..

Webdriver driver = new FirefoxDriver();
driver.get  // Go to ur login page
driver.click //Click on link which launches new window
Set<String> s = driver.getwindowhandles() //this will return all open windows
driver.switchTo.window(s[1]);  //will switch to second window

それが役に立てば幸い..

于 2012-12-07T05:34:50.780 に答える