2

私はFirefox8.0.1でSelenium2.29をテストしています(以前はモーダルダイアログの問題のため2.17で、最大バージョンとしてFF 11のままでした)。クリックするとJavaScriptコードをトリガーするアイコンがあります。このJSコードは、これを使用して処理できるポップアップをトリガーします。

driver.findElement(By.xpath(""xpath_to_icon")).click;

log("Alert text = " + getAlertText()); //log just outputs to the console

acceptAlert;

上記のコードは、最初のポップアップのトリガーと受け入れを問題なく処理します。私が抱えている問題は、最初のポップアップで[OK]をクリックすると(テストのために実行する必要があります)、2番目のポップアップがトリガーされることです。これまでのところ、この2番目のポップアップの処理には成功していません。私は運が悪かった次のコードのバリエーションを試しました:

acceptAlert;

driver.switchTo().alert().accept();

selenium.keyDownNative("32");
selenium.keyUpNative("32");

 Thread t = new Thread(new Runnable() {
     public void run() {
     // driver.findElement("").click();
     log("Alert2 text = " + getAlertText());
     acceptAlert();
     }
     });
     t.start();

このエラーがスローされるたびに:org.openqa.selenium.UnhandledAlertException:モーダルダイアログが表示されます。以前は、2番目のポップアップで[OK]ボタンを手動でクリックしていましたが、2.29ではそれができなくなりました。

現在、この特定の問題を抱えているテストケースは1つしかありませんが、他の誰かがこれに遭遇し、それを処理するための良い方法を見つけたかどうかを確認したいと思います。ありがとうございました。

4

1 に答える 1

0

Qrazi の言うとおり、フレームがある場合は対象となるフレームをコード変更する必要があり、新しいポップアップではフォーカスをフレームに切り替える必要があります。selectFrame、開始するのselectPopupselectWindow適した場所です。

フォーカスを切り替えたら、[OK] ボタンのクリックを自動化できます。最後にフォーカスを戻すことを忘れないでください。

フレームの場合、次のコードはフレーム フォーカスをページの上部に配置します。フレーム内に入ると、親フレームは表示されなくなります。

Driver.getDriver().switchTo().defaultContent();
于 2013-02-06T14:20:58.477 に答える