Cara Mengambil Tangkapan Skrin Di Selenium WebDriver



Artikel ini tentang cara mengambil tangkapan skrin di Selenium WebDriver membantu anda belajar bagaimana menangkap tangkapan skrin menggunakan kaedah TakesScreenshot & pendengar TestNG

Ujian Automasi telah menentukan keran baru pengujian moden dan ia tetap ada. Tetapi jika proses pengujian gagal, sangat tidak selesa untuk menguji semula keseluruhan skrip. Di sinilah tangkapan skrin berguna, kerana ia membantu mengesan kegagalan ujian dengan serta-merta. Melalui media blog ini kita akan belajar bagaimana mengambil tangkapan skrin di Pemandu Web.

Saya akan membincangkan topik berikut:

Jadi, mari kita mulakan, kawan-kawan!





Tangkapan Skrin di Selenium WebDriver: Mengapa Tangkapan Layar diperlukan dalam ujian Automasi?

Tangkapan skrin sangat diperlukan untuk analisis pepijat. secara automatik dapat mengambil tangkapan skrin semasa pelaksanaan. Andaikan anda menulis skrip ujian untuk mengautomasikan laman web, anda tidak akan terus memantau untuk melihat apakah laman web ini berfungsi dengan baik setiap saat. Anda akan membiarkan skrip itu berfungsi dengan baik dan anda akan sibuk dengan pekerjaan lain.

  • Tangkapan skrin membantu kami dalam memahami aliran aplikasi dan memeriksa apakah tindakan tersebut sesuai.
  • Anda perlu menaip contoh WebDriver ke TakesScreenshot.
  • Ia membantu semasa anda membuat persembahan ujian melayari silang kerana pengguna memerlukan untuk melihat laporan pelaksanaan
  • Menjejaki pelaksanaan akan menjadi lebih mudah jika anda menggunakan penyemak imbas tanpa kepala.
  • Tangkapan skrin ujian yang gagal juga dapat ditangkap dengan mudah.

Sekarang, mari kita terus maju dan belajar bagaimana sebenarnya anda dapat mengambil tangkapan skrin semasa menguji aplikasi.



Tangkapan Skrin di Selenium WebDriver: Bagaimana menangkap Tangkapan Skrin di Selenium?

Untuk menangkap tangkapan skrin di Selenium, kita dapat menggunakan antara muka, yang dipanggil Tangkapan Skrin. Kaedah ini inyatakan pemacu, bahawa ia dapat menangkap tangkapan skrin dan menyimpannya dengan cara yang berbeza.

Sintaks:



Fail fail = ((TakesScreenshot) pemacu) .getScreenshotAs (OutputType.FILE) String screenshotBase64 = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.BASE64)

di mana Jenis Keluaran mentakrifkan jenis output untuk tangkapan skrin.

Untuk menangkap tangkapan skrin dan menyimpannya di lokasi tertentu, ada metode yang disebut ' dapatkanScreenshotAs '

Mari kita fahami ini secara terperinci

Untuk pemanjangan WebDriver Tangkapan Skrin kaedah, ini membuat usaha terbaik bergantung pada penyemak imbas untuk mengembalikan yang berikut dalam urutan yang lebih baik:

  • Seluruh halaman
  • Tetingkap semasa
  • Bahagian bingkai semasa yang kelihatan
  • Tangkapan skrin keseluruhan paparan yang mengandungi penyemak imbas
  • Keseluruhan kandungan elemen HTML - Bahagian elemen HTML yang dapat dilihat

Sintaks:

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

di mana

  • X adalah jenis kaedah yang dikembalikan
  • Target memegang alamat destinasi
  • Balingan jika pelaksanaan yang mendasari tidak menyokong tangkapan skrin.

Kes ujian gagal

telah hadir dengan beberapa fungsi baru yang hebat yang menjadikan pengujian aplikasi menjadi lebih mudah. Ini kerana membolehkan interaksi di luar kotak pasir Javascript. Salah satu fungsi baru yang berguna ialah mengambil tangkapan skrin dari WebDriver.

Anda boleh mengambil tangkapan skrin di mana-mana peringkat ujian, tetapi kebanyakannya digunakan untuk ujian gagal dan mengambil tangkapan skrin membantu analisis sehingga kita dapat melihat apa yang salah semasa kegagalan ujian. Ini boleh dilakukan dengan menggunakan Anotasi TestNG.

Untuk melakukan ini, pertama, saya perlu

  • Buat kelas dan kemudian laksanakanUjiNG ' Pendaftar ITest ' .
  • Kemudian panggil kaedah ‘OnTestFailure’ .
  • Tambahkan kod untuk mengambil tangkapan skrin dalam kaedah ini.
  • Daripada hanya mengambil tangkapan skrin, dapatkan nama kaedah Uji dan ambil tangkapan skrin dengan nama ujian dan letakkan di folder tujuan.

Sekarang, persoalannya adalah bagaimana mendapatkan objek pemacu di kelas TestListeners menggunakan TestNG?

Saya akan membantu anda memahami betapa senangnya melakukannya.

Untuk mengambil tangkapan skrin di Selenium, kita mesti mempunyai objek pemacu. Dapatkan pemacu dari ITestContext yang harus ditetapkan dalam persediaan asas di mana mudah untuk membuat contoh pemacu kami. Harap anda jelas dengan perkara ini. Melangkah ke depan, kami akan melihat demo di mana saya akan membantu anda memahami betapa mudahnya mengambil tangkapan skrin di Selenium.

Saya akan menerangkan dua program yang berbeza di sini supaya anda mendapat idea yang tepat tentang cara mengambil tangkapan skrin di Selenium.

cara lulus dengan nilai di java

Program pertama membincangkan bagaimana menangkap tangkapan skrin kes yang berjaya dijalankan. Program kedua membantu anda memahami cara mengambil tangkapan skrin semasa kegagalan ujian.

Tangkapan skrin di Selenium WebDriver: Demo

Perkara pertama yang perlu dilakukan ketika anda ingin menguji aplikasi web adalah mempunyai fail Selenium Jar dan perpustakaan Java. Anda boleh memilih IDE pilihan anda. Saya lebih suka mengusahakan Eclipse IDE kerana mesra pengguna.

  • Saya akan menetapkan pemacu penyemak imbas
  • Buat contoh pemacu dengan ChromeDriver.
  • Dapatkan URL laman web.
  • Lakukan tindakan yang sesuai.

Dalam kes ini, saya akan mengambil tangkapan skrin halaman web rasmi kami

Rujuk kod di bawah:

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 Skrin kelas awam {public static void main (String [] args) membuang Pengecualian {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') Pemacu WebDriver = baru driver.get ('http://www.edureka.co/') TakesScreenshot ts = (TakesScreenshot) driver Sumber fail = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (sumber, Fail baru ('./ Tangkapan Skrin / Skrin .png ')) System.out.println (' Tangkapan Skrin diambil ') driver.quit ()}}

Keluaran untuk kod di atas digambarkan di bawah:

ScreenOutput - Cara mengambil tangkapan skrin di Selenium - Edureka

Dan folder itu mengandungi gambar

Sekarang, mari kita faham bagaimana tangkapan skrin ujian gagal

  • Pertama,
  • Tambahkan fail TestNG XML.
  • Tambahkan kebergantungan maven.
  • Buat kelas BaseClass yang memegang contoh WebDriver.
  • Tentukan dua fungsi iaitu inisialisasi () dan gagal ()
  • Panggil kedua fungsi ini di kelas lain, demo yang mewarisi BaseClass.
  • Kelas Demo ini memegang dua kaedah setUp () yang memanggil fungsi inisialisasi (), tearDown () membantu menutup pemacu dan ScreenshotTest () di mana kita menegaskan output sebenar dan yang diharapkan.
  • Dalam kes ini, saya akan menegaskan benar dan salah yang mengakibatkan kegagalan kes ujian.
  • Buat kelas lain, ListenersClass yang membantu WebDriver mendengar peristiwa tertentu.
  • Tambahkan kod ini di kelas demo @Listeners (ListenersClass.class) sebelum fungsi utama untuk mendengar kes ujian.

Anda boleh merujuk kod ini:

BaseClass

pakej 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. import org.openqa.selenium.chrome.ChromeDriver import org.testng.annotations.Pendengar kelas awam BaseClass {public static WebDriver driver public static void inisialization () {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver. exe ') driver = ChromeDriver baru () driver.get (' http://www.edureka.co/ ')} kekosongan awam gagal () {Fail srcFile = ((TakesScreenshot) pemacu) .getScreenshotAs (OutputType.FILE) cuba {CatchUtils.copyFile (srcFile, File baru ('/ C: / Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'ScreenshotsTaken / tests.jpg'))} catch (IOException e) {e.printStackTrace ()}} }

Kelas Demo

pakej com.edureka import org.testng.Asert import org.testng.annotations.AfterMethod import org.testng.annotations.BeforeMethod import org.testng.annotations.Pendengar mengimport org.testng.annotations.Test @Listeners (ListenersClass.class) awam demo kelas meluaskan BaseClass {@BeforeMethod public void setUp () {initialization ()} @AfterMethod public void tearDown () {driver.quit ()} @Test public void takeScreenshotTest () {Assert.assertEquals (benar, salah)}}

PendengarKelas

pakej com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult kelas awam PendengarClass meluaskan BaseClass mengimplementasikan ITestListener {public void onTestStart (hasil ITestResult) {// TODO Kaedah yang dijana secara automatik stub} kegagalan awam padaTestSu (Hasil ITestResult) {// TODO Kaedah yang dihasilkan secara automatik} awam tidak sah onTestFailure (hasil ITestResult) {System.out.println ('Failed Test') gagal ()} pembatalan awam onTestSkipped (hasil ITestResult) {// TODO Auto- kaedah yang dihasilkan stub} public void onTestFailedButWithinSuccessPercentage (hasil ITestResult) {// TODO Kaedah yang dihasilkan secara automatik} public void onStart (ITestContext konteks) {// TODO Kaedah yang dihasilkan secara automatik} public void onFinish (konteks ITestContext) {// TODO Auto -kod kaedah yang dihasilkan}}

Output digambarkan dengan cara ini:

Dengan ini, kita mengakhiri blog “Cara mengambil tangkapan skrin di Selenium WebDriver” ini. Saya harap anda menikmati artikel ini dan memahami cara menjalankan kes ujian. Ada soalan untuk kami? Sila sebutkan di bahagian komen 'Cara mengambil tangkapan skrin di Selenium WebDriver' dan kami akan menghubungi anda. Sekiranya anda ingin mengetahui lebih lanjut mengenai Selenium WebDriver dan membina karier dalam hal yang sama, lihatlah kami yang dilengkapi dengan latihan langsung yang dipimpin oleh instruktur dan pengalaman projek kehidupan sebenar. Latihan ini akan membantu anda memahami Selenium Testing secara mendalam dan membantu anda mencapai penguasaan terhadap subjek ini.