efficient selenium scripting
前のチュートリアルでは、技術的な意味について説明しました フレームワークにロギングを実装している間 。話し合った log4jユーティリティ 長々と。使いやすさの観点から、log4jを構成する基本的なコンポーネントについて説明しました。アペンダーとレイアウトを使用すると、ユーザーは目的のログ形式/パターンとデータソース/場所を選択するために活用されます。
これの現在の27番目のチュートリアルでは 包括的な無料のセレンオンライントレーニングシリーズ 、私たちは焦点をいくつかの些細なことに移します まだ重要なトピック それは私たちがいくつかの再発する問題のトラブルシューティングをガイドするでしょう。毎日のスクリプトで使用する場合と使用しない場合がありますが、長期的には役立ちます。
私たちは リストを実装して複数のリンクにアクセスし、マウスとキーボードのイベントを処理するいくつかの高度な概念について説明します 。それでは、適切なシナリオとコードスニペットを使用して、これらのトピックについて簡単に説明してみましょう。
10年の経験のためのjavaj2eeインタビューの質問
学習内容:
JavaScriptエグゼキュータ
テストシナリオを自動化する際、テストスクリプトの固有の部分となる特定のアクションがあります。
これらのアクションは次のとおりです。
- ボタン、ハイパーリンクなどをクリックします。
- テキストボックスに入力する
- 目的のオブジェクトが表示されるまで、垂直方向または水平方向にスクロールします
- そしてはるかに
さて、以前のチュートリアルから、そのようなアクションを自動化する最良の方法はSeleniumコマンドを使用することであることが明らかです。
しかし、セレンコマンドが機能しない場合はどうなりますか?
はい、非常に基本的で基本的なSeleniumコマンドが特定の状況で機能しない可能性は絶対にあります。
とは言うものの、このような状況をトラブルシューティングできるようにするために、JavaScriptエグゼキュータを全体像に取り入れています。
JavaScriptエグゼキュータとは何ですか?
JavascriptExecutorインターフェースはorg.openqa.seleniumの一部であり、java.lang.Objectクラスを実装します。 JavascriptExecutorは、Webブラウザ内でJavaScriptを直接実行する機能を提供します。 JavaScriptを実行できるようにするために、特定のパラメーターのセットとともにメソッドの形式の特定のメカニズムがその実装で提供されます。
メソッド
executeScript(文字列スクリプト、引数)
メソッド名が示すように、現在のウィンドウ、アラート、フレームなど(WebDriverインスタンスが現在フォーカスしているウィンドウ)内でJavaScriptを実行します。
executeAsyncScript(文字列スクリプト、引数)
メソッド名が示すように、現在のウィンドウ、アラート、フレームなど(WebDriverインスタンスが現在フォーカスしているウィンドウ)内でJavaScriptを実行します。
パラメータとインポートステートメントは、両方のエグゼキュータメソッドに共通です。
パラメーター
スクリプト–実行するスクリプト
引数–スクリプトの実行に必要なパラメーター(存在する場合)
インポートステートメント
テストスクリプトでJavascriptExecutorsを使用できるようにするには、次の構文を使用してパッケージをインポートする必要があります。
import org.openqa.selenium.JavascriptExecutor;
サンプルコード
#1)Web要素をクリックする
// Locating the web element using id WebElement element = driver.findElement(By.id('id of the webelement')); // Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Clicking the web element js.executeScript('arguments[0].click();', element);
#2)テキストボックスに入力する
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
#3)Web要素がビューに表示されるまで下にスクロールします
WebElement element=driver.findElement(By.xpath('//input[contains(@value,'Save')]')); // Instantiating the javascriptExecutor and scrolling into the view in the single test step ((JavascriptExecutor)driver).executeScript('arguments[0].scrollIntoView(true);',element);
JavascriptExecutorsにアクセスするためのコードを書く他のさまざまな方法を見つけることができます。
リスト内の複数の要素へのアクセス
場合によっては、順序付きまたは順序なしのリストに配置された複数のハイパーリンクや画像など、同じタイプの要素に出くわすことがあります。したがって、このような要素を1つのコードで処理することは絶対に理にかなっており、これはWebElementListを使用して実行できます。私が話している要素を理解するには、以下のスクリーンショットを参照してください。
上の画像では、さまざまなサービスプロバイダーが順序付けられていないリストに属していることがわかります。したがって、これらの要素のクリック可能性と可視性の検証は、要素のリストを使用する単一のコードで実行できます。
インポートステートメント
テストスクリプトでWebElementリストを使用できるようにするには、次の構文を使用してパッケージをインポートする必要があります。
インポートjava.util.List;
データベーステスト面接の質問と回答
サンプルコード
// Storing the list List serviceProviderLinks = driver.findElements(By.xpath('//div[@id='ServiceProvider']//ul//li')); // Fetching the size of the list int listSize = serviceProviderLinks.size(); for (int i=0; iリストを使用して、適切な実装変更で要素を検証できるさまざまな要件があります。
キーボードとマウスのイベントの処理
キーボードイベントの処理
また、前に述べたように、異なるコンテキストで同じ問題ステートメントを処理する方法はn個あります。
したがって、従来の取引戦略をより高度な戦略に変更することによって問題に対処する必要が生じる場合があります。セレンコマンドでアラートやポップアップなどを処理できないケースを目撃したため、キーボードストロークとマウスイベントを使用して処理するために、さまざまなJavaユーティリティを選択する必要がありました。
ロボットクラスは、キーボードイベントとマウスイベントを実行するためのそのようなオプションの1つです。
シナリオとその実装の助けを借りて、概念を理解しましょう。
シナリオ:
アラートインターフェイスを使用して受け入れたり閉じたりできない不要なポップアップが画面に表示される状況を収集しましょう。したがって、残された唯一の賢明なオプションは、ショートカットキー「Alt +スペースバー+ C」を使用してウィンドウを閉じることです。 。 RobotClassを使用してポップアップを閉じる方法を見てみましょう。
実装を開始する前に、テストスクリプト内でRobotクラスを使用できるようにするために必要なパッケージをインポートする必要があります。
輸入声明
java.awt.Robotをインポートします。
サンプルコード
// Instantiating Robot class Robot rb =new Robot(); // Calling KeyPress event rb.keyPress(KeyEvent.VK_ALT); rb.keyPress(KeyEvent.VK_SPACE); rb.keyPress(KeyEvent.VK_C); // Calling KeyRelease event rb.keyRelease(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_SPACE); rb.keyRelease(KeyEvent.VK_ALT);
ロボットクラスを使用してマウスイベントを処理することもできますが、ここでは、マウスイベントを処理するセレンの機能を見てみましょう。
マウスイベントの処理
WebDriverは、ユーザーがマウスとキーボードのイベントを自動化するために利用できるさまざまな対話ユーティリティを提供します。アクションインターフェイスは、シングルユーザーインタラクションをシミュレートするそのようなユーティリティの1つです。
したがって、ドロップダウンにマウスを合わせると、次のシナリオでオプションのリストが開きます。
シナリオ:
- ドロップダウンにマウスを合わせる
- リストオプションの項目の1つをクリックします
輸入声明
import org.openqa.selenium.interactions.Actions;
サンプルコード
ポートトリガーとポートフォワーディング
// Instantiating Action Interface Actions actions= new Actions(driver); // howering on the dropdown actions.moveToElement(driver.findElement(By. id ('id of the dropdown'))).perform(); // Clicking on one of the items in the list options WebElement subLinkOption=driver.findElement(By.id('id of the sub link')); subLinkOption.click();
結論
このチュートリアルでは、効率的なスクリプト作成に関連するいくつかの高度なトピックと、ユーザーがマウスとキーボードのイベントを処理する必要があるシナリオのトラブルシューティングについて説明しました。また、リストに複数のWeb要素を格納する方法についても説明しました。これらの障害が発生した場合は、トラブルシューティングできることを願っています。
次のチュートリアル#28 :シリーズの今後のチュートリアルでは、 SeleniumWebDriverを使用したデータベーステストの概念 。データベース接続のメカニズムを目撃し、Seleniumクエリを実行し、Selenium WebDriverCodeを介して結果をフェッチします。
推奨読書
- Selenium WebDriverの概要– Seleniumチュートリアル#8
- ログを使用したSeleniumスクリプトのデバッグ(Log4jチュートリアル)– Seleniumチュートリアル#26
- 30以上の最高のSeleniumチュートリアル:実際の例でSeleniumを学ぶ
- Cucumber Seleniumチュートリアル:Cucumber Java SeleniumWebDriverの統合
- Seleniumスクリプトを構築するためにChromeおよびIEブラウザーで要素を見つける方法– Seleniumチュートリアル#7
- 最初のWebDriverスクリプトの実装– Selenium WebDriverチュートリアル#10
- Eclipseを使用したWebDriver全体のセットアップとインストール– Seleniumチュートリアル#9
- ジェネリックとテストスイートの作成– Seleniumチュートリアル#22