how handle alerts popups selenium webdriver selenium tutorial 16
Selenium WebDriverでWindowsおよびWebベースのアラート/ポップアップを処理する効率的な方法:
.jarファイルの実行方法
前のチュートリアルでは、 WebDriverによって提供されるさまざまなタイプの待機 。また、WebDriverで使用できるさまざまな種類のナビゲーションオプションについても説明しました。
先に進む SeleniumWebDriverチュートリアル 、について話し合います Webアプリケーションとその処理戦略のテスト中に利用できるさまざまなタイプのアラート。
主に焦点を当てるアラートには2つのタイプがあります :
- Windowsベースのアラートポップアップ
- Webベースのアラートポップアップ
ウィンドウベースのポップアップの処理はWebDriverの機能を超えていることがわかっているため、ウィンドウポップアップを処理するためにいくつかのサードパーティユーティリティを実行します。
ポップアップの処理は、Webアプリケーションのテスト中に自動化するのが最も難しい作業の1つです。ポップアップの種類が多様であるため、状況はさらに複雑になります。
アラートボックス/ポップアップボックス/確認ボックス/プロンプト/認証ボックスとは何ですか?
これは、表示画面に表示される小さなボックスにすぎず、何らかの情報を提供したり、損傷を与える可能性のある操作について警告したり、操作の許可を求めたりする場合があります。
例: 理解を深めるために、実際の例を考えてみましょう。これらの人気のソーシャルネットワーキングサイトのいずれかに写真をアップロードしたとしましょう。後で、アップロードした写真を削除したいと思います。そこで、削除するために、削除ボタンをクリックしました。削除ボタンをクリックするとすぐに、システムは私のアクションに対して警告を発し、プロンプトを表示します–本当にファイルを削除しますか?そのため、このアラートを受け入れるか拒否するかを選択できます。
だからセッションの前に、 タイプに応じてアラートを拒否または受け入れる方法を見てみましょう。 Webベースのポップアップから始めます。
学習内容:
Webベースのポップアップ
WebDriverを使用してそれらをどのように処理するかを見てみましょう。
Webベースのポップアップボックスの処理
WebDriverは、アラートインターフェイスを使用してこれらのポップアップを処理する非常に効率的な方法をユーザーに提供します。
Alertインターフェースと一緒に使用する4つの方法があります。
1) void dismiss() – dismiss()メソッドは、ポップアップウィンドウが表示されたらすぐに[キャンセル]ボタンをクリックします。
二) void accept() – accept()メソッドは、ポップアップウィンドウが表示されたらすぐに[OK]ボタンをクリックします。
3) 文字列getText() – getText()メソッドは、アラートボックスに表示されているテキストを返します。
4) void sendKeys(String stringToSend) – sendKeys()メソッドは、指定された文字列パターンをアラートボックスに入力します。
先に進んで、実際の実装を見てみましょう。
テスト中のアプリケーションの説明
いくつかの基本的なタイプのWeb要素を含むようにWebページを設計しました。これは、このシリーズの前半でSelectクラスについて説明したときに紹介したものと同じアプリケーションです。
- ハイパーリンク :「Google」と「abodeQA」という2つのハイパーリンクが提供されており、ユーザーはそれぞれ「http://www.google.com/」と「http://www.abodeqa.com/」にリダイレクトされます。イベントをクリックします。
- 落ちる :デフォルトに設定された値で色、果物、動物を選択するための3つのハイパーリンクが作成されました。
- ボタン :「試してみる」ボタンが作成され、クリックイベント時に[OK]ボタンと[キャンセル]ボタンのあるポップアップボックスが表示されます。
(画像をクリックすると拡大表示されます)
次に、上記のWebページを作成するために使用されるHTMLコードを示します。
選択したクラスのテスト赤緑黄灰色 | アップルオレンジマンゴーライム | Elephant MouseDogを選択します |
ボタンをクリックして確認ボックスを表示します。 関数myFunction(){confirm( 'ボタンを押してください!');を試してください。 } |
自動化されるシナリオ
- Webブラウザを起動し、Webページを開きます
- 「試してみる」ボタンをクリックしてください
- アラートを受け入れる
- 「試してみる」ボタンをもう一度クリックしてください
- アラートを拒否する
SelectClassを使用したWebDriverコード
スクリプトの作成には、前のチュートリアルで作成した「Learning_Selenium」プロジェクトを使用することに注意してください。
ステップ1 :「Learning_Selenium」プロジェクトの下に「DemoWebAlert」という名前の新しいJavaクラスを作成します。
ステップ2 :以下のコードをコピーして「DemoWebAlert.java」クラスに貼り付けます。
以下は、上記のシナリオと同等のテストスクリプトです。
import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; /** * class description */ public class DemoWebAlert { WebDriver driver; /** * Constructor */ public DemoWebAlert() { } /** * Set up browser settings and open the application */ @Before public void setUp() { driver=new FirefoxDriver(); // Opened the application driver.get('file:///F:/Work/Selenium/Testing-Presentation/DemoWebPopup.htm'); driver.manage().window().maximize(); } /** * Test to check Select functionality * @throws InterruptedException */ @Test public void testWebAlert() throws InterruptedException { // clicking on try it button driver.findElement(By.xpath('//button[contains(text(),'Try it')]')).click(); Thread.sleep(5000); // accepting javascript alert Alert alert = driver.switchTo().alert(); alert.accept(); // clicking on try it button driver.findElement(By.xpath('//button[contains(text(),'Try it')]')).click(); Thread.sleep(5000); // accepting javascript alert driver.switchTo().alert().dismiss(); // clicking on try it button driver.findElement(By.xpath('//button[contains(text(),'Try it')]')).click(); Thread.sleep(5000); // accepting javascript alert System.out.println(driver.switchTo().alert().getText()); driver.switchTo().alert().accept(); } /** * Tear down the setup after test completes */ @After public void tearDown() { driver.quit(); } }
コードウォークスルー
インポートステートメント
org.openqa.selenium.Alertをインポートします –スクリプトを作成する前に、このパッケージをインポートします。パッケージは、WebDriverでWebベースのアラートを処理するために必要なAlertクラスを参照します。
Alertクラスのオブジェクト作成
アラートアラート= driver.switchTo()。alert();
Alertクラスの参照変数を作成し、それをアラートに参照します。
最高の無料の音楽ダウンローダーは何ですか?
アラートに切り替えます
Driver.switchTo()。alert();
上記のコマンドは、コントロールを最近生成されたポップアップウィンドウに切り替えるために使用されます。
アラートを受け入れる
alert.accept();
上記のコマンドはアラートを受け入れ、[OK]ボタンをクリックします。
アラートを拒否する
alert.dismiss();
上記のコマンドはアラートを閉じ、[キャンセル]ボタンをクリックするため、操作を続行できません。
ウィンドウベースのポップアップ
自動化中に、ファイルのアップロード中に印刷ポップアップやブラウジングウィンドウなどのウィンドウによって生成されたポップアップを処理する必要があるシナリオが発生することがあります。
= >>もお読みください Seleniumでファイルのアップロードを処理する方法
SeleniumはWebアプリケーションテストのみをサポートする自動化テストツールであるため、これらのポップアップの処理は常に少し注意が必要です。つまり、Windowsベースのアプリケーションはサポートされておらず、ウィンドウアラートもその1つです。ただし、Seleniumだけでは状況を改善することはできませんが、サードパーティの介入を行うことで、この問題を克服できます。
セレンとともにウィンドウベースのポップアップを処理するために利用できるサードパーティのツールがいくつかあります。
スクラムチームが提供するビジネス価値に責任を持つのは誰か
それでは、Robotクラスを使用してウィンドウベースのポップアップを処理しましょう。
Robotクラスは、キーボードとマウスのアクションをエミュレートするJavaベースのユーティリティです。
先に進む前に、テスト対象のアプリケーション(AUT)を見てみましょう。
テスト中のアプリケーションの説明
テスト対象のアプリケーションとして、「gmail.com」を使用します。アプリケーションにはこれ以上の紹介は必要ないと思います。
自動化されるシナリオ
- Webブラウザーを起動し、アプリケーション「gmail.com」を開きます
- 有効なユーザー名とパスワードを入力してください
- サインインボタンをクリックします
- 作成ボタンをクリックします
- 添付アイコンをクリックします
- ウィンドウベースのポップアップでアップロードするファイルを選択します。
ロボットクラスを使用したWebDriverコード
スクリプトの作成には、前のチュートリアルで作成した「Learning_Selenium」プロジェクトを使用することに注意してください。
ステップ1 :「Learning_Selenium」プロジェクトの下に「DemoWindowAlert」という名前の新しいJavaクラスを作成します。
ステップ2 :以下のコードをコピーして「DemoWindowAlert.java」クラスに貼り付けます。
以下は、上記のシナリオと同等のテストスクリプトです。
import java.awt.Robot;
import java.awt.event.KeyEvent; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver;パブリッククラスDemoWindowAlert {WebDriverドライバー; @Before public void setUp(){driver = new FirefoxDriver(); driver.get( 'https://gmail.com'); driver.manage()。window()。maximize(); } @Test public void testWindowAlert()throws Exception {//有効なメールアドレスを入力しますdriver.findElement(By.id( 'Email'))。sendKeys('TestSelenium1607@gmail.com '); //有効なパスワードを入力しますdriver.findElement(By.id( 'Passwd'))。sendKeys( 'TestSelenium'); //サインインボタンをクリックしますdriver.findElement(By.id( 'signIn'))。click(); Thread.sleep(30000); //作成ボタンをクリックしますdriver.findElement(By.xpath( '// div [@ class =' z0 '] // div [contains(text()、' COMPOSE ')]'))。click(); //ファイルの添付アイコンをクリックしますdriver.findElement(By.xpath( '// div [contains(@command、' Files ')] // div [contains(@class、' aaA ')]'))。click( ); // Robotクラスのインスタンスを作成します(Javaベースのユーティリティ)Robot rb = new Robot(); // keyPressイベントとkeyReleaseイベントを使用してキーを押すrb.keyPress(KeyEvent.VK_D); rb.keyRelease(KeyEvent.VK_D); Thread.sleep(2000); rb.keyPress(KeyEvent.VK_SHIFT); rb.keyPress(KeyEvent.VK_SEMICOLON); rb.keyRelease(KeyEvent.VK_SEMICOLON); rb.keyRelease(KeyEvent.VK_SHIFT); rb.keyPress(KeyEvent.VK_BACK_SLASH); rb.keyRelease(KeyEvent.VK_BACK_SLASH); Thread.sleep(2000); rb.keyPress(KeyEvent.VK_P); rb.keyRelease(KeyEvent.VK_P); rb.keyPress(KeyEvent.VK_I); rb.keyRelease(KeyEvent.VK_I); rb.keyPress(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_C); Thread.sleep(2000); rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER); Thread.sleep(2000); } @After public void tearDown(){driver.quit(); }} コードウォークスルー
インポートステートメント
java.awt.Robotをインポートします –スクリプトを作成する前に、このパッケージをインポートします。パッケージは、キーボードとマウスのイベントをシミュレートするために必要なJavaのRobotクラスを参照します。
java.awt.event.KeyEventをインポートします –このパッケージを使用すると、ユーザーはキーボードのkeyPressイベントとkeyReleaseイベントを使用できます。
ロボットクラスのオブジェクト作成
ロボットrb = new Robot();
Robotクラスの参照変数を作成し、インスタンス化します。
KeyPressおよびKeyReleaseイベント
rb.keyPress(KeyEvent.VK_D);
rb.keyRelease(KeyEvent.VK_D);
keyPressメソッドとkeyReleaseメソッドは、ユーザーがキーボードの特定のキーを押したり離したりすることをそれぞれシミュレートします。
結論
このチュートリアルでは、Webベースのポップアップを処理するために使用されるWebDriverのAlertクラスについて理解してもらうことを試みました。また、keyPressイベントとkeyReleaseイベントを使用して、ウィンドウベースのアラートに値を入力するために使用できるRobotクラスについても説明しました。
記事の概要:
- アラートは、表示画面に表示される小さなボックスで、何らかの情報を提供したり、損傷を与える可能性のある操作について警告したり、操作の許可を求めたりする場合があります。
- 一般的に2種類のアラートがあります -
- Windowsベースのアラートポップアップ
- Webベースのアラートポップアップ
- 実際のスクリプトを作成する前に、パッケージをインポートして、ドロップダウンを処理し、SelectクラスにアクセスできるようにするためのWebDriverスクリプトを作成できるようにする必要があります。
- WebDriverは、アラートインターフェイスを使用してこれらのポップアップを処理する非常に効率的な方法をユーザーに提供します。
- void dismiss() – 退出させる() ポップアップウィンドウが表示されたらすぐに、メソッドは「キャンセル」ボタンをクリックします。
- void accept() – accept() ポップアップウィンドウが表示されたらすぐに、メソッドは「OK」ボタンをクリックします。
- ストリング getText() – getText() メソッドは、アラートボックスに表示されたテキストを返します。
- void sendKeys(String stringToSend) – sendKeys() メソッドは、指定された文字列パターンをアラートボックスに入力します。
- ウィンドウベースのポップアップの処理 SeleniumはWebアプリケーションテストのみをサポートする自動化テストツールであることがわかっているため、常に少し注意が必要です。つまり、Windowsベースのアプリケーションはサポートされておらず、ウィンドウアラートもその1つです。
- ロボットクラス は、キーボードとマウスのアクションをエミュレートするJavaベースのユーティリティであり、キーボードイベントを使用してウィンドウベースのポップアップを処理するために効果的に使用できます。
- keyPressメソッドとkeyReleaseメソッドは、ユーザーがキーボードの特定のキーを押したり離したりすることをそれぞれシミュレートします。
次のチュートリアル#17 :次のチュートリアルでは、他のさまざまなことについて話し合います 一般的に使用されるWebDriverコマンド 。例外処理やiframe処理などのトピックに光を当てます。また、WebDriverで提供されるgetコマンドについても説明します。
読者が日常のスクリプトでこれらの概念を実行できるように、これらのトピックを簡単な例で説明します。
読者への注意 :それまでは、WebDriverユーティリティ(「アラートクラス」)とJavaユーティリティ(「ロボットクラス」)を使用して、Webベースおよびウィンドウベースのポップアップを含むWebページに注目して自動化してください。
このチュートリアルまたは他の以前のチュートリアルに関するクエリ/コメントを以下のコメントに投稿してください。
推奨読書
- Cucumber Seleniumチュートリアル:Cucumber Java SeleniumWebDriverの統合
- Selenium WebDriverの概要– Seleniumチュートリアル#8
- 最初のWebDriverスクリプトの実装– Selenium WebDriverチュートリアル#10
- Eclipseを使用したWebDriver全体のセットアップとインストール– Seleniumチュートリアル#9
- さまざまなタイプのWebDriverコマンドを使用してWeb要素の可視性を確認する– Seleniumチュートリアル#14
- GeckoDriver Seleniumチュートリアル:SeleniumプロジェクトでGeckoDriverを使用する方法
- JenkinsとSeleniumWebDriverの統合:ステップバイステップのチュートリアル
- 効率的なSeleniumスクリプティングとトラブルシューティングシナリオ– Seleniumチュートリアル#27