0

フォームからサードパーティの URL に検索条件を送信しています。target="someName" を指定しようとしました。しかし、「sameName」を使用して新しいウィンドウに焦点を合わせようとすると、そこでテキストを検証すると、セレンはそのロケーターを見つけられないか、そのウィンドウに焦点を合わせることができません。false を返します。これについて助けてください。緊急です。また、storeAllWindowNames または Ids selenium コマンドを試しましたが、新しい開いているウィンドウの代わりにメイン ウィンドウ ID を返すこともできませんでした。

4

2 に答える 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/targetJavaScriptで変更する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 に答える