Cara Mengambil Screenshot Di Selenium WebDriver



Artikel tentang cara mengambil tangkapan layar di Selenium WebDriver ini membantu Anda mempelajari cara menangkap tangkapan layar menggunakan metode TakesScreenshot & pendengar TestNG

Pengujian Otomasi telah menetapkan faucet baru dari pengujian modern dan akan tetap ada. Namun jika proses pengujian gagal, akan sangat merepotkan untuk menguji ulang seluruh skrip. Di sinilah screenshot berguna, karena membantu mendeteksi kegagalan pengujian secara instan. Melalui media blog ini kita akan belajar bagaimana cara mengambil screenshot WebDriver.

Saya akan membahas topik-topik berikut:

Jadi, ayo kita mulai, teman-teman!





Screenshot di Selenium WebDriver: Mengapa Screenshot diperlukan dalam pengujian Otomasi?

Tangkapan layar diperlukan untuk analisis bug. dapat secara otomatis mengambil tangkapan layar selama eksekusi. Misalkan Anda menulis skrip pengujian untuk mengotomatiskan halaman web, Anda tidak akan terus memantau untuk melihat apakah itu berfungsi dengan baik setiap saat. Anda akan membiarkan skrip melakukan tugasnya dan Anda akan disibukkan dengan beberapa pekerjaan lain.

  • Tangkapan layar membantu kami memahami aliran aplikasi dan memeriksa apakah itu berperilaku sesuai.
  • Anda perlu mengetikkan instance WebDriver ke TakesScreenshot.
  • Ini membantu saat Anda tampil pengujian lintas penjelajahan seperti yang dibutuhkan pengguna untuk melihat laporan eksekusi
  • Melacak eksekusi akan menjadi lebih mudah jika Anda bekerja dengan browser tanpa kepala.
  • Tangkapan layar dari pengujian yang gagal juga dapat ditangkap dengan mudah.

Sekarang, mari kita lanjutkan dan pelajari bagaimana tepatnya Anda dapat mengambil tangkapan layar saat menguji aplikasi.



Screenshot di Selenium WebDriver: Bagaimana cara menangkap Screenshot di Selenium?

Untuk mengambil screenshot di Selenium, kita dapat menggunakan sebuah antarmuka bernama TakesScreenshot. Metode ini iMengidentifikasi driver, yang dapat menangkap screenshot dan menyimpannya dengan cara yang berbeda.

Sintaksis:



File file = ((TakesScreenshot) driver] .getScreenshotAs (OutputType.FILE) String screenshotBase64 = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.BASE64)

dimana OutputType menentukan jenis keluaran untuk tangkapan layar.

Untuk menangkap tangkapan layar dan menyimpannya di lokasi tertentu, ada metode yang disebut ' getScreenshotAs '

Mari kita pahami ini secara mendetail

Untuk ekstensi WebDriver TakesScreenshot metode, ini membuat upaya terbaik bergantung pada browser untuk mengembalikan yang berikut dalam urutan yang lebih disukai:

  • Seluruh halaman
  • Jendela saat ini
  • Bagian yang terlihat dari bingkai saat ini
  • Tangkapan layar dari seluruh tampilan yang berisi browser
  • Seluruh konten elemen HTML - Bagian elemen HTML yang terlihat

Sintaksis:

X getScreenshotAs (OutputType (X). Target) menampilkan WebDriverException

dimana

  • X adalah tipe kembalian dari metode ini
  • Target memegang alamat tujuan
  • Melempar jika implementasi yang mendasarinya tidak mendukung pengambilan screenshot.

Kasus uji gagal

telah hadir dengan beberapa fungsi baru yang hebat yang membuat pengujian aplikasi jauh lebih mudah. Ini karena memungkinkan interaksi di luar kotak pasir Javascript. Salah satu fungsi baru yang berguna adalah dapat mengambil tangkapan layar dari WebDriver.

Anda dapat mengambil tangkapan layar di setiap tahap pengujian, tetapi sebagian besar, ini digunakan untuk saat pengujian gagal dan mengambil tangkapan layar membantu analisis sehingga kami dapat melihat apa yang salah selama pengujian gagal. Ini bisa dilakukan dengan menggunakan TestNG anotasi.

Untuk melakukan ini, pertama-tama, saya perlu

contoh variabel instance di java
  • Buat kelas dan kemudian terapkanTestNG ' ITestListener ' .
  • Kemudian panggil metode ‘OnTestFailure’ .
  • Tambahkan kode untuk mengambil tangkapan layar dengan metode ini.
  • Alih-alih hanya mengambil tangkapan layar, dapatkan nama metode Tes dan ambil tangkapan layar dengan nama tes dan letakkan di folder tujuan.

Sekarang, pertanyaannya adalah bagaimana cara mendapatkan objek driver di kelas TestListeners menggunakan TestNG?

Saya akan membantu Anda memahami betapa mudahnya melakukan itu.

Untuk mengambil screenshot di Selenium, kita perlu memiliki objek driver. Dapatkan driver dari ITestContext yang harus disetel di penyetelan dasar di mana mudah untuk membuat instance driver kami. Semoga kalian jelas dengan ini. Selanjutnya, kita akan melihat demo di mana saya akan membantu Anda memahami betapa sederhananya mengambil tangkapan layar di Selenium.

Saya akan menjelaskan dua program berbeda di sini sehingga Anda mendapatkan ide yang tepat tentang cara mengambil tangkapan layar di Selenium.

Program pertama berkaitan dengan cara menangkap tangkapan layar dari kasus uji yang berhasil dijalankan. Program kedua membantu Anda memahami cara mengambil tangkapan layar selama pengujian gagal.

Tangkapan layar di Selenium WebDriver: Demo

Hal pertama yang harus dilakukan saat Anda ingin menguji aplikasi web adalah memiliki file Selenium Jar dan pustaka Java. Anda dapat memilih IDE pilihan Anda. Saya lebih suka mengerjakan Eclipse IDE karena mudah digunakan.

  • Saya akan mengatur driver browser ke
  • Buat instance driver dengan ChromeDriver.
  • Dapatkan URL halaman web.
  • Lakukan tindakan yang sesuai.

Dalam hal ini, saya akan mengambil tangkapan layar dari halaman web resmi kami

Lihat kode di bawah ini:

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 Layar {public static void main (String [] args) memunculkan 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 Sumber file = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (sumber, File baru ('./ Screenshot / Layar .png ')) System.out.println (' Screenshot diambil ') driver.quit ()}}

Output untuk kode di atas digambarkan di bawah ini:

ScreenOutput - Cara mengambil screenshot di Selenium - Edureka

Dan folder tersebut berisi gambar

Sekarang, mari kita pahami cara mengambil screenshot dari pengujian yang gagal

  • Pertama,
  • Tambahkan file XML TestNG.
  • Tambahkan dependensi maven.
  • Buat kelas BaseClass yang menampung instance WebDriver.
  • Definisikan dua fungsi yaitu inisialisasi () dan gagal ()
  • Panggil kedua fungsi ini di kelas lain, demo yang mewarisi BaseClass.
  • Kelas Demo ini menampung dua metode setUp () yang memanggil fungsi inisialisasi (), tearDown () membantu menutup driver dan ScreenshotTest () di mana kita menegaskan keluaran aktual dan yang diharapkan.
  • Dalam kasus ini, saya akan menegaskan baik benar dan salah yang mengakibatkan kegagalan kasus uji.
  • Buat kelas lain, ListenersClass yang membantu WebDriver mendengarkan kejadian tertentu.
  • Tambahkan kode ini di kelas demo @Listeners (ListenersClass.class) sebelum fungsi utama untuk mendengarkan kasus uji.

Anda dapat merujuk ke kode ini:

BaseClass

paket com.edureka 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 impor org.openqa.selenium.chrome.ChromeDriver impor org.testng.annotations.Listeners kelas publik BaseClass {public static driver WebDriver public static void inisialisasi () {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver. exe ') driver = new ChromeDriver () driver.get (' http://www.edureka.co/ ')} public void gagal () {File srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) coba {FileUtils.copyFile (srcFile, File baru ('/ C: / Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'ScreenshotsTaken / tests.jpg'))} catch (IOException e) {e.printStackTrace ()}} }

DemoClass

paket com.edureka impor org.testng.Assert impor org.testng.annotations.AfterMethod import org.testng.annotations.BeforeMethod impor org.testng.annotations.Listeners impor org.testng.annotations.Test @Listeners (ListenersClass.class) publik demo kelas memperluas BaseClass {@BeforeMethod public void setUp () {initialization ()} @AfterMethod public void tearDown () {driver.quit ()} @Test public void takeScreenshotTest () {Assert.assertEquals (true, false)}}

ListenersClass

paket com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult kelas publik ListenersClass extends BaseClass mengimplementasikan ITestListener {public void onTestStart (hasil ITestResult) {// TODO Auto-generated method stub} public void onTestSuccess (Hasil ITestResult) {// TODO Auto-generated method stub} public void onTestFailure (hasil ITestResult) {System.out.println ('Failed Test') gagal ()} public void onTestSkipped (hasil ITestResult) {// TODO Auto- metode yang dihasilkan stub} public void onTestFailedButWithinSuccessPercentage (hasil ITestResult) {// TODO Auto-generated method stub} public void onStart (ITestContext context) {// TODO Auto-generated method stub} public void onFinish (ITestContext context) {// TODO Auto -generated method stub}}

Outputnya digambarkan dengan cara ini:

Dengan ini, kita mengakhiri blog 'Bagaimana cara mengambil screenshot di Selenium WebDriver' ini. Saya harap kalian menikmati artikel ini dan mengerti bagaimana menjalankan test case. Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar 'Bagaimana cara mengambil screenshot di Selenium WebDriver' dan kami akan menghubungi Anda kembali. Jika Anda ingin mempelajari lebih lanjut tentang Selenium WebDriver dan membangun karier di bidang yang sama, lihat kami yang dilengkapi dengan pelatihan langsung yang dipimpin instruktur dan pengalaman proyek kehidupan nyata. Pelatihan ini akan membantu Anda memahami Pengujian Selenium secara mendalam dan membantu Anda mencapai penguasaan atas subjek tersebut.