web-dev-qa-db-ja.com

アラート内の[OK]ボタンをクリックします(Selenium IDE)

Selenium コマンドでアラートウィンドウ内の[OK]ボタンをクリックする必要があります。私はassertAlertまたはverifyAlertを試しましたが、彼らは私が望むことをしません。

「OK」ボタンをクリックすることは可能ですか?もしそうなら、誰かがSelenium IDEコマンドの例を教えてもらえますか?

64
Bruno

Selenium 2.0b1をお試しください。最初のバージョンとはコアが異なります。 documentation に従ってポップアップダイアログをサポートする必要があります。

ポップアップダイアログ

Selenium 2.0ベータ1以降、ポップアップダイアログボックスの処理のサポートが組み込まれています。ポップアップを開くトリガーとアクションを実行したら、次の方法でアラートにアクセスできます。

Java

Alert alert = driver.switchTo().alert();

ルビー

driver.switch_to.alert

これにより、現在開いているアラートオブジェクトが返されます。このオブジェクトを使用すると、コンテンツを承認、却下、読み取り、またはプロンプトに入力することもできます。このインターフェイスは、アラート、確認、プロンプトに対して同様に機能します。詳細については、JavaDocsを参照してください。

51
amra

警告ボックスの[OK]ボタンをクリックするには:

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

これは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コード で動作するため。

10
Petr Janeček

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());
4
Prashanth Sams

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")   |
4
Ankit jain

chooseOkOnNextConfirmation を調べることもできますが、ドキュメントを正しく読んだ場合、おそらくデフォルトの動作になるはずです。

2
Hank Gay

質問は明確ではありません-これはページの読み込みに関するアラートですか? Seleniumを使用する場合、アラートダイアログは表示されません。これは、alert()を、確認のために与えられたメッセージをキャプチャする独自のバージョンに置き換えるためです。

Seleniumは、テスト中のウィンドウ内の関数に独自のバージョンをパッチする必要があるため、ページの読み込み時にalert()をサポートしません。

テスト対象のアプリケーションからオンロードアラートを取り除くことができない場合は、GUIオートメーションを使用して、生成されたポップアップをクリックすることを検討する必要があります。 AutoIT Windowsを使用している場合。

2
Jonny Buchanan

アラートインターフェースを使用します。最初にswitchTo()を使用してアラートを作成し、次にaccept()を使用してOKをクリックするか、dismiss()を使用してキャンセルします

Alert alert_box = driver.switchTo().alert();
alert_box.accept(); 

または

Alert alert_box = driver.switchTo().alert();
alert_box.dismiss(); 
1
iamsankalp89

新しいSelenium IDE(2019年にリリース))には、はるかに広範なAPIと新しいドキュメントがあります。

これはあなたが試してみたいコマンドだと思います:

ウェブドライバーは確認の確認でOKを選択します

説明:

https://www.seleniumhq.org/Selenium-ide/docs/en/api/commands/#webdriver-choose-ok-on-visible-confirmation

他のアラート関連のAPI呼び出しがあります。そのページでalertを検索するだけです

0
Al Sargent

これは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()
0
mrk

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);
...
0
Alex

assertAlertがトリックを行う必要があります。ドキュメントでは、ページのOnLoadイベントハンドラーで生成されたアラートをこの方法でスクリプト化できないことを確認しています(ASP.NETページのライフサイクルのために、それを自分でも経験しました)。それはあなたが遭遇していることでしょうか?

0
BenetD

Seleniumの場合、アラートはjavascriptを使用して発生したアラートです。

 javascript:alert();

アラートが実際にJavaScriptアラートであるか、メッセージを表示するための単なるdivベースのボックスであるかを確認する基本的なチェックが1つあります。 Javascriptアラートの場合、Seleniumスクリプトの実行中に画面上に表示することはできません。

表示できる場合は、アラートの[ok]ボタンのロケーターを取得し、Selenium.click(locator)を使用してアラートを破棄する必要があります。より多くのコンテキストを提供できれば、より良い手助けができます:

  1. IDEまたはRC?
  2. アラートのHTMLコード
  3. seleniumスクリプト。

バミープ

0
vamyip