アラートとポップアップの対処方法 Selenium?
⚡ スマートサマリー
アラートとポップアップ Selenium Java自動化フローを妨げるスクリプトダイアログと子ウィンドウ。この記事では、単純なアラート、プロンプト、確認アラートを識別する方法、WebDriver を使用してそれらに切り替える方法、および getWindowHandles() を使用して複数のウィンドウを管理する方法について説明します。

アラートとは何ですか Selenium?
An アラートイン Selenium 小さいです Javaユーザーに情報や通知を提供するために画面に表示されるスクリプトダイアログボックス。特定のアクションの確認、操作実行の許可要求、警告メッセージの表示などに使用できます。
このチュートリアルでは、ポップアップの処理方法を学びます。 Selenium ウェブアプリケーションで見られるさまざまな種類のアラート テストまた、アラートの処理方法についても見ていきます。 Selenium WebDriverと、アラートの種類に応じてそれを受け入れるか拒否するかを決定する方法。
アラートの種類 Selenium
Javaスクリプトは、3 つの警告ダイアログを公開します。 Selenium 異なる対応が必要だ。
1) Simple Alert
シンプルなアラートは、画面上に情報または警告を表示します。ユーザーはクリックすることでのみそれを承認できます。 OK.
2) Prompt Alert
プロンプトアラートは、ユーザーに入力を求めます。 Selenium WebDriver は、 sendKeys("input...").
3) Confirmation Alert
確認アラートは、ユーザーに操作を承認またはキャンセルするよう求めます。 OK (NAIST) と キャンセル ボタン。
アラートの処理方法 Selenium webdriver
その Alert インターフェース Selenium webdriver アラートのあらゆる操作を網羅する4つのメソッドを公開します。
- 無効な却下() — クリックして キャンセル
driver.switchTo().alert().dismiss();
- void accept() — クリックして OK
driver.switchTo().alert().accept();
- 文字列 getText() ―アラートメッセージを取得します。
driver.switchTo().alert().getText();
- void sendKeys(String stringToSend) — プロンプトアラートにテキストを入力します。
driver.switchTo().alert().sendKeys("Text");
Eclipse オートコンプリートは、入力後に利用可能なアラート方法を表示します。ping alert. エディター行で。いつでもメインウィンドウからアラートに切り替えるには、 Seleniumさん 。切り替える() 方法。
実例:顧客デモの削除
次のシナリオを自動化してみましょう。 Guru99のデモサイトを例示 Selenium アラート処理。
ステップ1) ブラウザを起動して開く https://demo.guru99.com/test/delete_customer.php.
ステップ2) 顧客IDを入力してください。
ステップ3) クリック 送信
ステップ4) 表示された確認アラートを承認するか、拒否するかを選択してください。
Selenium Java Code: ハンドル Confirmation Alert
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.Alert;
public class AlertDemo {
public static void main(String[] args) throws NoAlertPresentException, InterruptedException {
// Selenium 4 ships Selenium Manager, so an explicit driver path is no longer required.
WebDriver driver = new ChromeDriver();
// Open the Delete Customer demo page
driver.get("https://demo.guru99.com/test/delete_customer.php");
driver.findElement(By.name("cusid")).sendKeys("53920");
driver.findElement(By.name("submit")).submit();
// Switch to the confirmation alert
Alert alert = driver.switchTo().alert();
// Capture the alert message
String alertMessage = alert.getText();
System.out.println(alertMessage);
Thread.sleep(5000);
// Accept the alert
alert.accept();
driver.quit();
}
}
出力: ブラウザは「顧客削除」ページを開き、顧客IDを送信し、確認アラートを承認して、デモアプリケーションからレコードを削除します。
ポップアップの対処方法 Windows in Selenium webdriver
自動化処理が複数のブラウザウィンドウにまたがって行われる場合、テストは各操作後にウィンドウ間でフォーカスを切り替え、親ウィンドウに戻る必要があります。 Selenium WebDriverは、これを可能にする2つのメソッドを提供しています。
driver.getWindowHands()
を返します Set<String> 開いているすべてのウィンドウのハンドルを取得します。セットを反復処理して、メインウィンドウからアプリケーション内の任意の子ウィンドウに切り替えます。
driver.getWindowHandle()
を返します String 現在のウィンドウの固有のハンドルを取得します。子ウィンドウを開く前にこのハンドルを取得しておくと、後で親ウィンドウに戻ることができます。
ウィンドウ処理を実証するには、次の手順に従ってください。 Guru99個のポップアップデモ。
実例:ウィンドウ切り替え
ステップ1) ブラウザを起動して開く https://demo.guru99.com/popup.php.
ステップ2) クリック 詳細 リンク。新しい子ウィンドウが開きます。
ステップ3) 子ウィンドウでは、ユーザーにメールアドレスを入力して送信するように促します。
ステップ4) メールアドレスを入力して送信してください。
ステップ5) このページには、デモによって返されたアクセス認証情報が表示されます。
認証情報の表示後:
- 子ウィンドウを閉じます。
- フォーカスを親ウィンドウに戻します。
Selenium Java Code: 複数を処理する Windows
import java.util.Iterator;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class WindowHandle_Demo {
public static void main(String[] args) throws InterruptedException {
// Selenium 4 auto-resolves the browser driver via Selenium Manager
WebDriver driver = new FirefoxDriver();
driver.get("https://demo.guru99.com/popup.php");
driver.manage().window().maximize();
driver.findElement(By.xpath("//*[contains(@href,'popup.php')]")).click();
String mainWindow = driver.getWindowHandle();
// Capture every open window handle
Set<String> allWindows = driver.getWindowHandles();
Iterator<String> iterator = allWindows.iterator();
while (iterator.hasNext()) {
String childWindow = iterator.next();
if (!mainWindow.equalsIgnoreCase(childWindow)) {
// Switch to the child window
driver.switchTo().window(childWindow);
driver.findElement(By.name("emailid")).sendKeys("gaurav.3n@gmail.com");
driver.findElement(By.name("btnLogin")).click();
// Close the child window
driver.close();
}
}
// Return focus to the main window
driver.switchTo().window(mainWindow);
driver.quit();
}
}
出力: サイトが立ち上げられ、 こちらをクリックしてください リンクをクリックすると子タブが開きます。 Selenium メールアドレスを入力して送信し、子ウィンドウを閉じて、親ウィンドウに戻ります。
結論
- 3つを定義しました Selenium アラートの種類(簡易アラート、プロンプトアラート、確認アラート)と、それぞれのスクリーンショット。
- WebDriverを使用したアラート処理の実例
Alert顧客削除シナリオを用いたインターフェース。 - ハンドルをキャプチャして複数のブラウザー ウィンドウを処理します
getWindowHandle()(NAIST) とgetWindowHandles()そして、それらを切り替えながら使う。















