3


1

Seleniumを使用してページのonload()で生成されるJavaScriptアラートのウォークアラウンドはどうなりますか?

Selenium RC(C#)を使用してフォームページを自動化しています。 「送信」ボタンをクリックすると、「レコードが正常に編集されました!」というアラートが表示されます。 このアラートボックスのタイトルは、「 http://www..comのページのコメント:」です。

ただし、Seleniumにはこのアラートは表示されません。 そして、私はそれを回避することはできません。

これが私が試したものです:

selenium.Click("ctl00_Content_ctl00_btnSubmit");
selenium.WaitForPageToLoad("30000");

結果:次のエラーが表示されます:「 Selenium.SeleniumException:Timed out after 30000ms

それから私は試してみました:

selenium.Click("ctl00_Content_ctl00_btnSubmit");
selenium.OpenWindow("", "The page at The page at http://www.******.com says:");
selenium.Close();
selenium.WaitForPageToLoad("30000");

結果:3つのウィンドウが開きます(サイト、アラート、および追加ウィンドウ)。 何も閉じられません。 次のエラーが表示されます:「 Selenium.SeleniumException:Timed out after 30000ms

それから私は試してみました:

selenium.Click("ctl00_Content_ctl00_btnSubmit");
selenium.SelectWindow("The page at The page at http://www.******.com says:");
selenium.Close();
selenium.WaitForPageToLoad("30000");

結果:次のエラーが表示されます:「 タイトル 'http://www..comのページにあるウィンドウが見つかりませんでした:'

助言がありますか? この障害を克服するのを手伝ってください。

3 Answer


4


どうやらこれを行う最も簡単な方法は、スクリプトを使用して、alert()関数をダイアログをポップアップしないものに再定義することです。

((JavascriptExecutor) fDriver).executeScript(
  "window.alert = function(msg) { return true; }"
);


1


最後に、回避策を見つけました:

    selenium.Click("ctl00_Content_ctl00_btnSubmit");
    Thread.Sleep(5000);
    selenium.KeyDownNative("32");
    selenium.KeyUpNative("32");

皆さん、最高の願いを!