Selenium ide を使用してアクションを複製しようとしています。アクションは、新しいウィンドウを開くリンクをクリックすることです。セレンideを他のウィンドウではなく新しいウィンドウにフォーカスさせるにはどうすればよいですか? それは私のために働いていません。
4 に答える
ウィンドウを選択
これには、コマンドを使用する必要がありますselectWindow | windowName
。
他のウィンドウからメイン ウィンドウに戻るには、次のようにします。selectWindow | null
Arguments: * windowID - the JavaScript window ID of the window to select Selects a popup window using a window locator; once a popup window
が選択されている場合、すべてのコマンドはそのウィンドウに移動します。メイン ウィンドウを再度選択するには、null をターゲットとして使用します。
Window locators provide different ways of specifying the window object:
タイトル、内部 JavaScript の「名前」、または JavaScript 変数によって。
* title=My Special Window: Finds the window using the text that
タイトルバーに表示されます。気をつけて; 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」を使用してウィンドウを開くことができます。
If no window locator prefix is provided, we'll try to guess what you
このような意味:
1.) if windowID is null, (or the string "null") then it is assumed the
ユーザーは、ブラウザによってインスタンス化された元のウィンドウを参照しています)。
2.) if the value of the "windowID" parameter is a JavaScript variable
現在のアプリケーション ウィンドウの名前である場合、この変数には JavaScript の window.open() メソッドへの呼び出しからの戻り値が含まれていると想定されます。
3.) Otherwise, selenium looks in a hash it maintains that maps string
名前をウィンドウの「名前」に。
4.) If that fails, we'll try looping over all of the known windows
適切な「タイトル」を見つけようとします。「タイトル」は必ずしも一意ではないため、予期しない動作が発生する可能性があります。
If you're having trouble figuring out the name of a window that you want
操作するには、window.open によって作成された (したがって、Selenium によってインターセプトされた) ウィンドウの名前を識別する Selenium ログ メッセージを調べます。ウィンドウを開くたびに、次のようなメッセージが表示されます。
debug: window.open call intercepted; window ID (which you can
selectWindow() で使用) は "myNewWindow" です
In some cases, Selenium will be unable to intercept a call to
window.open (たとえば、「onLoad」イベントの最中または前に呼び出しが発生した場合)。(これはバグ SEL-339 です。) そのような場合、次のように、空の (空白の) URL を使用して、Selenium openWindow コマンドを使用して、開いているウィンドウの名前を Selenium に認識させることができます: openWindow("", "myFunnyWindow") .
selectWindow(ウィンドウID)
selectPopup
ポップアップの場合は実行しselectPopUp | windowId
てから、メイン ウィンドウに戻るには次のようにします。selectWindow | null
selectPopUp(windowID)
引数:
- windowID - さまざまな意味を持つポップアップ ウィンドウの識別子
ポップアップ ウィンドウを選択するプロセスを簡素化します (また、selectWindow() が既に提供している以上の機能は提供しません)。
- windowID が指定されていないか、「null」が指定されている場合は、最初の非トップ ウィンドウが選択されます。一番上のウィンドウは、 windowID を指定せずに selectWindow() によって選択されるウィンドウです。これは、複数のポップアップ ウィンドウが表示されている場合は使用しないでください。
- それ以外の場合、windowID を次の順序で考慮してウィンドウが検索されます。
- window.open() に指定されたウィンドウの「名前」
- ウィンドウへの参照である JavaScript 変数
- ウィンドウのタイトル。これは、selectWindow によって実行されるのと同じ順序付きルックアップです。
Selenium Web Driver 2 を使用してこれを試してください。
driver.switch_to.window(driver.window_handles.last);
target="_blank"
これを考慮してください:属性を削除したいですか? 私にとってこれは解決策でした:
getEval
this.page().findElement('link=Facebook').removeAttribute('target');
同じウィンドウ内にとどまると、Selenium IDE でいくつかの利点が得られます。これは、ターゲット ブランクがサポートされていないことを示しています。
「<strong>storeAttribute」コマンドを使用して、(Selenium IDE によって生成された) ランダムなウィンドウ ID を保存できます。ID を変数に格納するだけで、'<strong>selectWindow' コマンドを使用してウィンドウを選択できます。
これを使用してみてください:
<tr>
<td>storeAttribute</td>
<td>link=Help Center@target</td>
<td>window_ID</td>
</tr>
<tr>
<td>selectWindow</td>
<td>${window_ID}</td>
<td></td>
</tr>