كيف تأخذ لقطة شاشة في سيلينيوم WebDriver



تساعدك هذه المقالة حول كيفية التقاط لقطة شاشة في Selenium WebDriver على تعلم كيفية التقاط لقطة الشاشة باستخدام طريقة TakesScreenshot ومستمعي TestNG

حدد اختبار الأتمتة صنبورًا جديدًا للاختبار المعاصر وهو موجود لتبقى. ومع ذلك ، إذا فشلت عملية الاختبار ، فسيكون من غير الملائم إعادة اختبار النص بأكمله. هذا هو المكان الذي تكون فيه لقطات الشاشة مفيدة ، لأنها تساعد في اكتشاف إخفاقات الاختبار على الفور. من خلال وسيط هذه المدونة ، سنتعلم كيفية التقاط لقطة شاشة بتنسيق ويب درايفر.

سأناقش المواضيع التالية:

لذا ، فلنبدأ ، يا رفاق!





لقطة شاشة في Selenium WebDriver: لماذا مطلوب لقطة شاشة في اختبار التشغيل الآلي؟

لقطات الشاشة مرغوبة لتحليل الأخطاء. يمكنه التقاط لقطات شاشة تلقائيًا أثناء التنفيذ. لنفترض أنك تكتب نصًا اختباريًا لأتمتة صفحة ويب ، فلن تتابع المراقبة لمعرفة ما إذا كانت تعمل بشكل صحيح في كل مرة. ستدع النص يؤدي وظيفته وستكون مشغولًا في بعض الأعمال الأخرى.

  • تساعدنا لقطات الشاشة في فهم تدفق التطبيق والتحقق مما إذا كان يتصرف وفقًا لذلك.
  • تحتاج إلى نسخ نسخة WebDriver إلى TakesScreenshot.
  • يساعد أثناء أدائك عبر اختبار التصفح حيث يطلب المستخدم عرض تقارير التنفيذ
  • سيصبح تتبع التنفيذ أمرًا سهلاً إذا كنت تعمل على متصفح بدون رأس.
  • يمكن أيضًا التقاط لقطة شاشة للاختبارات التي فشلت بسهولة.

الآن ، دعنا نمضي قدمًا ونتعرف على كيفية التقاط لقطة شاشة بالضبط أثناء اختبار التطبيق.



لقطة شاشة في Selenium WebDriver: كيفية التقاط لقطة شاشة في السيلينيوم؟

لالتقاط لقطة شاشة في السيلينيوم ، يمكننا الاستفادة من واجهة تسمى يأخذ لقطة. هذه الطريقة أنايوضح للسائق أنه يمكنه التقاط لقطة شاشة وتخزينها بطرق مختلفة.

بناء الجملة:



theano مقابل tensorflow مقابل keras
ملف الملف = ((TakesScreenshot) سائق) .getScreenshotAs (OutputType.FILE) String screenshotBase64 = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.BASE64)

أين نوع الإخراج يحدد نوع إخراج لقطة الشاشة.

من أجل التقاط لقطة الشاشة وتخزينها في موقع معين ، هناك طريقة تسمى ' getScreenshotAs '

دعونا نفهم هذا بالتفصيل

لتوسيع WebDriver يأخذ لقطة ، فهذا يبذل قصارى جهده اعتمادًا على المتصفح لإرجاع ما يلي بترتيب مفضل:

  • الصفحة بأكملها
  • النافذة الحالية
  • الجزء المرئي من الإطار الحالي
  • لقطة شاشة للشاشة بأكملها تحتوي على المتصفح
  • المحتوى الكامل لعنصر HTML - الجزء المرئي من عنصر HTML

بناء الجملة:

X getScreenshotAs (OutputType (X). target) يطرح WebDriverException

أين

  • X هو نوع الإرجاع للطريقة
  • الهدف يحمل عنوان الوجهة
  • رميات إذا كان التنفيذ الأساسي لا يدعم التقاط لقطة الشاشة.

فشلت حالة الاختبار

لقد توصلنا إلى بعض الوظائف الجديدة الرائعة التي تجعل اختبار التطبيق أسهل بكثير. هذا لأن ملف يسمح بالتفاعل خارج وضع الحماية لجافا سكريبت. تتمثل إحدى الوظائف المفيدة الجديدة في القدرة على التقاط لقطات شاشة من WebDriver.

يمكنك التقاط لقطات شاشة في أي مرحلة من الاختبار ، ولكن في الغالب ، يتم استخدامها عند الاختبار فشل ويساعد أخذ لقطات الشاشة في التحليل حتى نتمكن من معرفة الخطأ الذي حدث أثناء فشل الاختبار. يمكن القيام بذلك باستخدام التعليقات التوضيحية TestNG.

للقيام بذلك ، سأحتاج أولاً إلى ذلك

  • قم بإنشاء فصل دراسي ثم قم بتنفيذهTestNG ' ITestListener ' .
  • ثم اتصل بالطريقة 'onTestFailure' .
  • أضف الكود لأخذ لقطة الشاشة بهذه الطريقة.
  • بدلاً من مجرد التقاط لقطة الشاشة ، احصل على اسم طريقة الاختبار والتقط لقطة شاشة باسم الاختبار وضعها في المجلد الوجهة.

الآن ، السؤال هو كيفية الحصول على كائن السائق في فئة TestListeners باستخدام TestNG؟

سأساعدك على فهم مدى سهولة القيام بذلك.

لأخذ لقطة شاشة في السيلينيوم ، نحتاج إلى كائن سائق. احصل على برنامج التشغيل من ITestContext والذي يجب ضبطه في الإعداد الأساسي حيث يكون من السهل إنشاء مثيل برنامج التشغيل الخاص بنا. أتمنى أن تكونوا واضحين مع هذا يا رفاق. للمضي قدمًا ، سنلقي نظرة على العرض التوضيحي حيث سأساعدك على فهم مدى بساطة التقاط لقطة شاشة في السيلينيوم.

سأشرح برنامجين مختلفين هنا حتى تحصل على فكرة مناسبة حول كيفية التقاط لقطة شاشة في السيلينيوم.

يتعامل البرنامج الأول مع كيفية التقاط لقطة شاشة لحالة الاختبار التي يتم تشغيلها بنجاح. يساعدك البرنامج الثاني على فهم كيفية التقاط لقطة شاشة أثناء فشل الاختبار.

لقطة شاشة في Selenium WebDriver: تجريبي

أول شيء تفعله عندما تريد اختبار تطبيق ويب هو أن يكون لديك ملفات Selenium Jar ومكتبات Java. يمكنك اختيار IDE من اختيارك. أفضل العمل على Eclipse IDE لأنه سهل الاستخدام.

  • سأقوم بتعيين برنامج تشغيل المتصفح على
  • إنشاء مثيل لبرنامج التشغيل باستخدام ChromeDriver.
  • احصل على عنوان URL لصفحة الويب.
  • نفذ الإجراءات المناسبة.

في هذه الحالة ، سألتقط لقطة شاشة لصفحة الويب الرسمية الخاصة بنا

الرجوع إلى الكود أدناه:

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 static void main (String [] args) يطرح استثناء {System.setProperty ('webdriver.chrome.driver'، 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') WebDriver driver = new ChromeDriver.exe driver.get ('http://www.edureka.co/') TakesScreenshot ts = (TakesScreenshot) driver مصدر الملف = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (المصدر ، ملف جديد ('./ لقطات الشاشة / الشاشة) .png ')) System.out.println (تم التقاط لقطة الشاشة) driver.quit ()}}

ناتج الكود أعلاه موضح أدناه:

ScreenOutput - كيفية التقاط لقطة شاشة في السيلينيوم - Edureka

والمجلد يحتوي على الصورة

الآن ، دعونا نفهم كيفية التقاط لقطة شاشة للاختبار الذي فشل

  • أول،
  • أضف ملف TestNG XML.
  • أضف التبعيات المخضرمة.
  • قم بإنشاء فئة BaseClass التي تحتفظ بمثيل WebDriver.
  • حدد وظيفتين هما التهيئة () والفشل ()
  • استدعاء هاتين الوظيفتين في فئة أخرى ، تجريبي الذي يرث BaseClass.
  • تحتوي هذه الفئة التجريبية على طريقتين setUp () التي تستدعي وظيفة التهيئة () ، وتساعد tearDown () في إغلاق برنامج التشغيل و ScreenshotTest () حيث نؤكد الناتج الفعلي والمتوقع.
  • في هذه الحالة ، سأؤكد على الصواب والخطأ مما يؤدي إلى فشل حالة الاختبار.
  • قم بإنشاء فئة أخرى ، ListenersClass والتي تساعد WebDriver على الاستماع إلى أحداث معينة.
  • أضف هذا الرمز في فئة العرض التوضيحيListeners (ListenersClass.class) قبل الوظيفة الرئيسية للاستماع إلى حالة الاختبار.

يمكنك الرجوع إلى هذا الرمز:

BaseClass

package 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.Listeners public class BaseClass {public static WebDriver driver public static void initialization () {System.setProperty ('webdriver.chrome.driver'، 'C: UsersNeha_VaidyaDiveresktopchromedriver32 exe ') driver = new ChromeDriver () driver.get (' http://www.edureka.co/ ')} فشل عام () {File srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) حاول {FileUtils.copyFile (srcFile، new File ('/ C: / Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'ScreenshotsTaken / tests.jpg'))} catch (IOException e) {e.printStackTrace ()}} }

DemoClass

package com.edureka import org.testng.Assert import org.testng.annotations.AfterMethod import org.testng.annotations.B BeforeMethod import org.testng.annotations.Listeners import org.testng.annotations.TestListeners (ListenersClass.class) public يمتد العرض التوضيحي للفئة BaseClass {BeforeMethod public void setUp () {initialization ()}AfterMethod public void tearDown () {driver.quit ()}Test public void takeScreenshotTest () {Assert.assertEquals (true، false)}}

المستمعون

package com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult public class ListenersClass توسع BaseClass تنفذ ITestListener {public void onTestStart (نتيجة ITestResult) {// TODO Auto-created method stub} عام باطل onTestSuccess (نتيجة ITestResult) {// TODO Auto-created method stub} عام باطل onTestFailure (نتيجة ITestResult) {System.out.println ('Failed Test') فشل ()} باطل عام onTestSkipped (نتيجة ITestResult) {// TODO Auto- تم إنشاء أسلوب stub} باطل عام onTestFailedButWithinSuccessPercentage (نتيجة ITestResult) {// TODO Auto-created method stub} فراغ عام onStart (سياق ITestContext) {// TODO Auto-created method stub} عام باطل onFinish (سياق ITestContext) {// TODO Auto أبتر طريقة مولدة}}

يتم تصوير الإخراج بهذه الطريقة:

بهذا ، نصل إلى نهاية مدونة 'كيفية التقاط لقطة شاشة في Selenium WebDriver'. أتمنى أن تستمتعوا يا رفاق بهذه المقالة وأن تفهموا كيفية إجراء اختبار الحالة. لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في 'كيفية التقاط لقطة شاشة في Selenium WebDriver' وسنعاود الاتصال بك. إذا كنت ترغب في معرفة المزيد عن Selenium WebDriver وبناء مهنة في نفس الوقت ، فراجع موقعنا الذي يأتي مع تدريب مباشر بقيادة مدرب وخبرة مشروع واقعية. سيساعدك هذا التدريب على فهم اختبار السيلينيوم بعمق ويساعدك على تحقيق إتقان الموضوع.