フォームからサードパーティの URL に検索条件を送信しています。target="someName" を指定しようとしました。しかし、「sameName」を使用して新しいウィンドウに焦点を合わせようとすると、そこでテキストを検証すると、セレンはそのロケーターを見つけられないか、そのウィンドウに焦点を合わせることができません。false を返します。これについて助けてください。緊急です。また、storeAllWindowNames または Ids selenium コマンドを試しましたが、新しい開いているウィンドウの代わりにメイン ウィンドウ ID を返すこともできませんでした。
質問する
1106 次
2 に答える
0
これが解決策です:
さて、選択の余地がない場合はそれを使用してください。これが1つの解決策です。のような独自の名前のターゲットがある場合はtarget="popup"
、リンクをクリックする前にターゲットウィンドウを開くだけで済みます。例:
[b]store "javascript{selenium.browserbot.getCurrentWindow().open('', 'popup')}", "myWindow"[/b]
がある場合はtarget="_blank"
、ウィンドウを開く前にターゲットを変更する必要があります。
store "javascript{this.page().findElement('link=My link who open the popup with target blank').target='popup'}", "myVar"
store "javascript{selenium.browserbot.getCurrentWindow().open('', 'popup')}", "myWindow"
次に、リンクをクリックしてselectWindow("popup")
。あれは。
もう1つの解決策は、Aタグ全体を書き直し、href/target
JavaScriptで変更するwindow.open
ことですが、これは少し手間がかかります。
于 2012-09-18T09:58:04.017 に答える
0
アイデアは次のとおりです。新しいウィンドウでテキストを検証しようとすると、firepath(ffoxのfirebugアドオン)とコマンドを使用して検証するテキストのxpathまたはcssselectorを取得できるため、ウィンドウ名を取得する必要はないと思います
String txt = driver.findElement(By.xpath(//...blablbalba)).getText().trim();
//or
String txt = driver.findElement(cssSelecot(html>..blalblabla...)).getText().trim();
//validation
Assert.assertTrue(txt.equals("blablabla"));
実際に検証できます。
または、何かを検証したいが、セレンがそれに対処できない場合は、js (js を使用した getText) を使用することをお勧めします。
String cssSelector=....
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x = $(\""+cssSelector+"\");");
stringBuilder.append("return x.text().toString();") ;
String res= (String) js.executeScript(stringBuilder.toString());
Assert.assertTrue(res.trim().contains("blablabla....") );
これがうまくいくことを願っています。
于 2012-09-16T10:28:51.117 に答える