0

これは初歩的な質問かもしれませんが、対話しているポップアップのタイプを特定する方法がわからないので、Selenium webdriver を使用して自動化するのに十分な情報を得ることができます。

私はそれが単なるポップアップだと思っていましたが、ポップアップを処理する標準的な方法 (と思われるもの) を使用すると、Selenium JUnit テストでボタンがクリックされたインスタンスがフリーズします。

    String mainWindowHandle = driver.getWindowHandle();

    //P2: Click on the element that opens the popup
    driver.findElement(By.xpath("//a[contains(text(),'Login')]")).click();

    Set s=driver.getWindowHandles();

    Iterator ite=s.iterator();
    while(ite.hasNext()){
        System.out.println("Current ite = " + ite.next().toString());
        String popupHandle=ite.next().toString();
        if(!popupHandle.contains(mainWindowHandle)){
            driver.switchTo().window(popupHandle);
            System.out.println("reached popup window? Now perform the login procedure before returning to the original window");
            driver.switchTo().window(mainWindowHandle);
        }
    }

このコードはここで説明されており、受け入れられた回答でした。このコードの他の多くの同様の例も見てきましたが、私のアプリケーションでは、セレン テストがオンラインでハングします。

driver.findElement(By.xpath("//a[contains(text(),'Login')]")).click();

ログイン情報を入力するのを待つだけで、手動で入力するまでテストがハングします。情報を入力すると、テストが続行されます。このコードでポップアップ ウィンドウのハンドルを見つけて (そして最終的に) ユーザー名とパスを入力し、[OK] をクリックするようにしたいと考えています。従来のポップアップを扱っていない可能性はありますか? どうすればわかりますか?

このログイン ボタンは、html の次の要素です。<a href="/trac/login">Login</a>

4

1 に答える 1

0

セレンRCの使用中に同じ問題に直面しました。以下に示すように、問題の解決に役立つ try catch ブロックを使用しました。それが役に立つことを願っています。

//ポップアップリンクをクリックするまでのwebdriverコード

try {
      selenium.waitForPopUp("myWindow","3000");
        }



    catch(Exception e){
        selenium.selectPopUp("myWindow");
        selenium.windowFocus();

//ポップアップウィンドウで実行する必要があるアクティビティ***

// メイン ウィンドウにフォーカスを戻すコード

 String[] winFocus; 
 String winTitle;
 winFocus = selenium.getAllWindowTitles();
 winTitle = winFocus[0];
 selenium.selectWindow(winTitle);

}

于 2012-12-18T06:35:40.807 に答える