SeleniumWebDriverでスクリーンショットを撮る方法



Selenium WebDriverでスクリーンショットを撮る方法に関するこの記事は、TakesScreenshotメソッドとTestNGリスナーを使用してスクリーンショットをキャプチャする方法を学ぶのに役立ちます

自動化テストは、現代のテストの新しい蛇口を定義しました、そしてそれはここにとどまります。ただし、テストプロセスが失敗した場合、スクリプト全体を再テストすることは非常に不便です。スクリーンショットはテストの失敗を即座に検出するのに役立つため、ここで便利です。このブログの媒体を通して、スクリーンショットを撮る方法を学びます WebDriver。

次のトピックについて説明します。

それでは、始めましょう、皆さん!





Selenium WebDriverのスクリーンショット:自動化テストでスクリーンショットが必要なのはなぜですか?

スクリーンショットはバグ分析に適しています。 実行中に自動的にスクリーンショットを撮ることができます。 Webページを自動化するテストスクリプトを作成するとしますが、毎回正しく機能しているかどうかを監視し続けることはありません。スクリプトにその仕事を任せれば、他の仕事に専念することになります。

  • スクリーンショットは、アプリケーションのフローを理解し、それに応じて動作しているかどうかを確認するのに役立ちます。
  • WebDriverインスタンスをTakesScreenshotにタイプキャストする必要があります。
  • あなたが演奏している間それは役立ちます クロスブラウジングテスト ユーザーが実行のレポートを表示する必要があるため
  • ヘッドレスブラウザで作業している場合、実行の追跡は非常に簡単になります。
  • 失敗したテストのスクリーンショットも簡単にキャプチャできます。

それでは、先に進んで、アプリケーションのテスト中にスクリーンショットを正確に撮ることができる方法を学びましょう。



Selenium WebDriverのスクリーンショット:Seleniumでスクリーンショットをキャプチャする方法は?

Seleniumでスクリーンショットをキャプチャするために、と呼ばれるインターフェイスを利用できます。 TakesScreenshot。 この方法iスクリーンショットをキャプチャしてさまざまな方法で保存できることをドライバーに示します。

Pythonでオブジェクトを初期化する方法

構文:



ファイルファイル=((TakesScreenshot)ドライバー).getScreenshotAs(OutputType.FILE)文字列screenshotBase64 =((TakesScreenshot)ドライバー).getScreenshotAs(OutputType.BASE64)

どこ OutputType スクリーンショットの出力タイプを定義します。

スクリーンショットをキャプチャして特定の場所に保存するために、「 getScreenshotAs 「」

これを詳しく理解しましょう

WebDriver拡張用 TakesScreenshot メソッドの場合、これはブラウザに応じて、以下を好ましい順序で返すように最善を尽くします。

  • ページ全体
  • 現在のウィンドウ
  • 現在のフレームの表示部分
  • ブラウザを含むディスプレイ全体のスクリーンショット
  • HTML要素のコンテンツ全体–HTML要素の表示部分

構文:

X getScreenshotAs(OutputType(X)。target)はWebDriverExceptionをスローします

どこ

  • Xはメソッドの戻り値の型です
  • ターゲットは宛先アドレスを保持します
  • 投げる 基盤となる実装がスクリーンショットのキャプチャをサポートしていない場合。

テストケースが失敗しました

アプリケーションのテストをはるかに簡単にするいくつかの優れた新機能を考案しました。これは、 Javascriptサンドボックスの外部での対話を許可します。新しい便利な機能の1つは、WebDriverからスクリーンショットを撮ることができることです。

cプログラムのリンクリスト

テストのどの段階でもスクリーンショットを撮ることができますが、ほとんどの場合、テストの際に使用されます 失敗する スクリーンショットを撮ると分析に役立ち、テストの失敗時に何がうまくいかなかったかを確認できます。これは、 TestNGアノテーション。

これを行うには、まず、次のことを行う必要があります

  • クラスを作成してから実装するTestNG ‘ ITestListener '
  • 次に、メソッドを呼び出します 「onTestFailure」
  • このメソッドでスクリーンショットを撮るコードを追加します。
  • スクリーンショットを撮るだけでなく、テストメソッド名を取得し、テスト名を含むスクリーンショットを撮り、宛先フォルダーに配置します。

ここで、問題は、TestNGを使用してTestListenersクラスのドライバーオブジェクトを取得する方法です。

それがいかに簡単かを理解するのを手伝います。

Seleniumでスクリーンショットを撮るには、ドライバーオブジェクトが必要です。ドライバーインスタンスを簡単に作成できる基本セットアップで設定する必要があるITestContextからドライバーを取得します。あなたたちがこれで明確であることを願っています。先に進むと、Seleniumでスクリーンショットを撮るのがいかに簡単かを理解するのに役立つデモを見ていきます。

ここでは、Seleniumでスクリーンショットを撮る方法について適切なアイデアが得られるように、2つの異なるプログラムについて説明します。

最初のプログラムは、正常に実行されたテストケースのスクリーンショットをキャプチャする方法を扱います。 2番目のプログラムは、テストの失敗時にスクリーンショットを撮る方法を理解するのに役立ちます。

Selenium WebDriverのスクリーンショット: デモ

Webアプリケーションをテストするときに最初に行うことは、SeleniumJarファイルとJavaライブラリを用意することです。お好みのIDEをお選びいただけます。 Eclipse IDEはユーザーフレンドリーなので、作業する方が好きです。

  • ブラウザドライバをに設定します
  • ChromeDriverを使用してドライバーインスタンスをインスタンス化します。
  • WebページのURLを取得します。
  • 対応するアクションを実行します。

この場合、公式Webページのスクリーンショットを撮ります

以下のコードを参照してください。

import java.io.File import java.io.IOException import org.apache.commons.io.FileUtils import org.openqa.selenium.OutputType import org.openqa.selenium.TakesScreenshot import org.openqa.selenium.WebDriver import org.openqa .selenium.chrome.ChromeDriver public class Screen {public static void main(String [] args)throws Exception {System.setProperty( 'webdriver.chrome.driver'、 'C​​:UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe')WebDriver driver = new ChromeDriver() driver.get( 'http://www.edureka.co/')TakesScreenshot ts =(TakesScreenshot)driverファイルソース= ts.getScreenshotAs(OutputType.FILE)FileUtils.copyFile(source、new File( './ Screenshots / Screen .png '))System.out.println('スクリーンショットが取得されました ')driver.quit()}}

上記のコードの出力を以下に示します。

ScreenOutput-Seleniumでスクリーンショットを撮る方法-Edureka

そして、フォルダには画像が含まれています

文字列をJavaで日付に変換

では、失敗したテストのスクリーンショットを撮る方法を理解しましょう

  • 最初、
  • TestNGXMLファイルを追加します。
  • Mavenの依存関係を追加します。
  • WebDriverインスタンスを保持するクラスBaseClassを作成します。
  • 2つの関数、すなわちinitialization()とfailed()を定義します
  • これら2つの関数を別のクラスで呼び出し、 デモ BaseClassを継承します。
  • このデモクラスは、initialization()関数を呼び出す2つのメソッドsetUp()を保持します。tearDown()はドライバーを閉じるのに役立ち、ScreenshotTest()は実際の出力と期待される出力をアサートします。
  • この場合、trueとfalseの両方をアサートするため、テストケースは失敗します。
  • WebDriverが特定のイベントをリッスンするのに役立つ別のクラスListenersClassを作成します。
  • テストケースをリッスンするために、メイン関数の前にデモクラス@Listeners(ListenersClass.class)にこのコードを追加します。

このコードを参照できます:

BaseClass

パッケージcom.edurekaimport java.io.File import java.io.IOException import org.apache.commons.io.FileUtils import org.openqa.selenium.OutputType import org.openqa.selenium.TakesScreenshot import org.openqa.selenium.WebDriver import org.openqa.selenium.chrome.ChromeDriver import org.testng.annotations.Listeners public class BaseClass {public static WebDriver driver public static void initialize(){System.setProperty( 'webdriver.chrome.driver'、 'C​​:UsersNeha_VaidyaDesktopchromedriver_win32chromedriver。 exe ')driver = new ChromeDriver()driver.get(' http://www.edureka.co/ ')} public void failed(){File srcFile =((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE)try {FileUtils.copyFile(srcFile、new File( '/ C:/ Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'ScreenshotsTaken / tests.jpg'))} catch(IOException e){e.printStackTrace()}} }

DemoClass

パッケージcom.edurekaimport org.testng.Assert import org.testng.annotations.AfterMethod import org.testng.annotations.BeforeMethod import org.testng.annotations.Listeners import org.testng.annotations.Test @Listeners(ListenersClass.class)publicクラスデモはBaseClassを拡張します{@BeforeMethodpublic void setUp(){initialization()} @AfterMethod public void tearDown(){driver.quit()} @Test public void takeScreenshotTest(){Assert.assertEquals(true、false)}}

ListenersClass

パッケージcom.edurekaimport org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult public class ListenersClass extends BaseClassimplements ITestListener {public void onTestStart(ITestResult result){// TODO自動生成されたメソッドスタブ} public void onTestSuccess (ITestResult result){// TODO自動生成されたメソッドスタブ} public void onTestFailure(ITestResult result){System.out.println( 'Failed Test')failed()} public void onTestSkipped(ITestResult result){// TODO Auto-生成されたメソッドスタブ} public void onTestFailedButWithinSuccessPercentage(ITestResult result){// TODO自動生成されたメソッドスタブ} public void onStart(ITestContext context){// TODO自動生成されたメソッドスタブ} public void onFinish(ITestContext context){// TODO Auto -生成されたメソッドスタブ}}

出力は次のように表されます。

これで、この「SeleniumWebDriverでスクリーンショットを撮る方法」ブログは終了です。この記事を楽しんで、テストケースの実行方法を理解していただければ幸いです。質問がありますか? 「SeleniumWebDriverでスクリーンショットを撮る方法」のコメントセクションにその旨を記載してください。折り返しご連絡いたします。 Selenium WebDriverについて詳しく学び、同じキャリアを構築したい場合は、 インストラクター主導のライブトレーニングと実際のプロジェクト経験が付属しています。このトレーニングは、Seleniumテストを深く理解し、主題をマスターするのに役立ちます。