Selenium コマンドでアラートウィンドウ内の[OK]ボタンをクリックする必要があります。私はassertAlert
またはverifyAlert
を試しましたが、彼らは私が望むことをしません。
「OK」ボタンをクリックすることは可能ですか?もしそうなら、誰かがSelenium IDEコマンドの例を教えてもらえますか?
Selenium 2.0b1をお試しください。最初のバージョンとはコアが異なります。 documentation に従ってポップアップダイアログをサポートする必要があります。
Selenium 2.0ベータ1以降、ポップアップダイアログボックスの処理のサポートが組み込まれています。ポップアップを開くトリガーとアクションを実行したら、次の方法でアラートにアクセスできます。
Java
Alert alert = driver.switchTo().alert();
ルビー
driver.switch_to.alert
これにより、現在開いているアラートオブジェクトが返されます。このオブジェクトを使用すると、コンテンツを承認、却下、読み取り、またはプロンプトに入力することもできます。このインターフェイスは、アラート、確認、プロンプトに対して同様に機能します。詳細については、JavaDocsを参照してください。
警告ボックスの[OK]ボタンをクリックするには:
driver.switchTo().alert().accept();
これは2012年の回答、2009年の場合の質問ですが、人々はまだそれを見ており、正しい(WebDriver
を使用)1つとほとんど役に立つ(しかし十分ではない)答えが1つしかありません。
Selenium RCを使用していて、実際にアラートダイアログを表示できる場合は、実行できません。 Seleniumが処理します。ただし、 Seleniumのドキュメントに記載されているとおり :
Seleniumはこれらのダイアログを(window.alert、window.confirm、window.Promptを置き換えることで)隠そうとするので、ページの実行が停止することはありません。アラートポップアップが表示されている場合は、ページの読み込みプロセス中に発生した可能性があります。通常、ページを保護するには早すぎます。
これは、Selenium RC(したがって、Selenium IDE)の既知の制限であり、Selenium 2(WebDriver)が開発された理由の1つです。 onload
JSアラートを処理する場合、必要です WebDriverを使用するためにアラート処理。
つまり、 Robot
または Selenium.keyPressNative()
を使用して、任意のテキストを入力し、 Enter ダイアログを盲目的に確認します。これは最もクリーンな方法ではありませんが、機能する可能性があります。ただし、alert
メッセージを取得することはできません。
Robot
にはすべての便利なキーが定数にマップされているため、簡単です。 keyPressNative()
を使用すると、10
を押す値として Enter または 27
ために Esc ASCIIコード で動作するため。
1 |アラートポップアップテキストを印刷して閉じる-I
Alert alert = driver.switchTo().alert();
System.out.println(closeAlertAndGetItsText());
2 |警告ポップアップテキストを印刷して-IIを閉じる
Alert alert = driver.switchTo().alert();
System.out.println(alert.getText()); //Print Alert popup
alert.accept(); //Close Alert popup
|アラートポップアップテキストをアサートして閉じる
Alert alert = driver.switchTo().alert();
assertEquals("Expected Value", closeAlertAndGetItsText());
Selenium IDEを使用している場合、手動でOkボタンをクリックする必要があります自動的に[OK]ボタンをクリックすると、Selenium RCまたはwebdriverを使用する必要があり、以下のコマンドはSelenium IDE用です
Selenium ideでは、storeeval
コマンド、異なるタイプのボックスを使用します
storeEval | alert("This is alert box") |
storeEval | Prompt("This is Prompt box. Please enter the value") | text
storeEval | confirm("this is cofirm box") |
chooseOkOnNextConfirmation
を調べることもできますが、ドキュメントを正しく読んだ場合、おそらくデフォルトの動作になるはずです。
質問は明確ではありません-これはページの読み込みに関するアラートですか? Seleniumを使用する場合、アラートダイアログは表示されません。これは、alert()
を、確認のために与えられたメッセージをキャプチャする独自のバージョンに置き換えるためです。
Seleniumは、テスト中のウィンドウ内の関数に独自のバージョンをパッチする必要があるため、ページの読み込み時にalert()
をサポートしません。
テスト対象のアプリケーションからオンロードアラートを取り除くことができない場合は、GUIオートメーションを使用して、生成されたポップアップをクリックすることを検討する必要があります。 AutoIT Windowsを使用している場合。
アラートインターフェースを使用します。最初にswitchTo()
を使用してアラートを作成し、次にaccept()
を使用してOKをクリックするか、dismiss()
を使用してキャンセルします
Alert alert_box = driver.switchTo().alert();
alert_box.accept();
または
Alert alert_box = driver.switchTo().alert();
alert_box.dismiss();
新しいSelenium IDE(2019年にリリース))には、はるかに広範なAPIと新しいドキュメントがあります。
これはあなたが試してみたいコマンドだと思います:
ウェブドライバーは確認の確認でOKを選択します
説明:
他のアラート関連のAPI呼び出しがあります。そのページでalertを検索するだけです
これはPythoncodeです
アラートボックスの問題(特に甘いアラートは、遅延があり、Seleniumがかなり速すぎることです)
私のために働いたオプションは次のとおりです:
while True:
try:
driver.find_element_by_xpath('//div[@class="sweet-alert showSweetAlert visible"]')
break
except:
wait = WebDriverWait(driver, 1000)
confirm_button = driver.find_element_by_xpath('//button[@class="confirm"]')
confirm_button.click()
ChooseOkOnNextConfirmation()を使用してアラートを閉じ、getAlert()を使用してアラートが表示されたことを確認します(オプションで確認のためにテキストを取得します)。
Selenium.chooseOkOnNextConfirmation(); // prepares Selenium to handle next alert
Selenium.click(locator);
String alertText = Selenium.getAlert(); // verifies that alert was shown
assertEquals("This is a popup window", alertText);
...
assertAlertがトリックを行う必要があります。ドキュメントでは、ページのOnLoadイベントハンドラーで生成されたアラートをこの方法でスクリプト化できないことを確認しています(ASP.NETページのライフサイクルのために、それを自分でも経験しました)。それはあなたが遭遇していることでしょうか?
Seleniumの場合、アラートはjavascriptを使用して発生したアラートです。
javascript:alert();
アラートが実際にJavaScriptアラートであるか、メッセージを表示するための単なるdivベースのボックスであるかを確認する基本的なチェックが1つあります。 Javascriptアラートの場合、Seleniumスクリプトの実行中に画面上に表示することはできません。
表示できる場合は、アラートの[ok]ボタンのロケーターを取得し、Selenium.click(locator)を使用してアラートを破棄する必要があります。より多くのコンテキストを提供できれば、より良い手助けができます:
バミープ