Selenium مع Cucumber (إطار عمل BDD)


في هذا البرنامج التعليمي، سوف تتعلم كيفية التكامل Cucumber مع Selenium برنامج تشغيل الويب.

ما هي تفاصيل Cucumber?

Cucumber هو أسلوب اختبار يدعم التطوير الموجه بالسلوك (BDD). ويشرح سلوك التطبيق بنص انجليزي بسيط باستخدام لغة غيركين.

تعلم اكثر من خلال - https://www.guru99.com/cucumber-tutorials.html

ما هي تفاصيل Selenium?

Selenium هي أداة أتمتة ل الاختبار الوظيفي من التطبيق على شبكة الإنترنت. Selenium يدعم لغات مختلفة مثل Java، Ruby، python C#، إلخ.

تعلم اكثر من خلال - https://www.guru99.com/selenium-tutorial.html

لماذا استخدام Cucumber مع Selenium?

Cucumber Selenium هما تقنيتان شائعتان.

تستخدم معظم المنظمات Selenium للاختبار الوظيفي. هذه المنظمات التي تستخدم Selenium، تريد التكامل Selenium مع Cucumber as Cucumber يجعل من السهل قراءة وفهم تدفق التطبيق.

Cucumber تعتمد الأداة على إطار التطوير الموجه بالسلوك بمثابة الجسر بين الأشخاص التاليين:

  1. مهندس برمجيات ومحلل أعمال.
  2. اختبار يدوي واختبار الأتمتة.
  3. اختبار يدوي والمطورين.

Cucumber إطار عمل BDD أيضًا يفيد العميل في فهم رمز التطبيق نظرًا لأنه يستخدم لغة Gherkin التي تكون في شكل نص عادي، فيمكن لأي شخص في المؤسسة فهم سلوك البرنامج. إن قواعد Gherkin تكون في شكل نص بسيط يمكن قراءته وفهمه.

Cucumber مع Selenium

شرط أساسي للاستخدام Cucumber مع Selenium

قبل أن نبدأ Cucumber Selenium التكامل، نحتاج إلى العناصر التالية:

  • Selenium ملفات الجرة:
  • Selenium-خادم مستقل

يمكن تحميلها على http://www.seleniumhq.org/download/

شرط أساسي للاستخدام Cucumber مع Selenium

ملفات جرة ل Cucumber :

  • Cucumber-النواة
  • Cucumber-لغة البرمجة
  • تغطية رمز cobertura
  • Cucumber-جافا
  • Cucumber-جونيت
  • Cucumber-jvm-deps
  • Cucumber-التقارير
  • هامكريست الأساسية
  • الجيركين خيار صغير
  • جونيت

يمكن تحميلها على https://mvnrepository.com/search?q=Cucumber

تحتاج إلى البحث عن الملفات وتنزيلها واحدًا تلو الآخر على حدة.

على سبيل المثال سنوضح لك تحميل أحد ملفات الجرة أي “Cucumber-جوهر."

انقر على رابط التحميل أعلاه. فإنه يعيد التوجيه إلى الموقع أدناه. الآن ابحث في الجرة المحددة، على سبيل المثال "Cucumber Core" كما هو موضح في الصورة أدناه:

شرط أساسي للاستخدام Cucumber مع Selenium

في الصفحة التالية، انقر على الإصدار 1.2.2،

شرط أساسي للاستخدام Cucumber مع Selenium

في الشاشة التالية، انقر فوق "تنزيل" للحصول على "Cucumber ملف jar الأساسي.

شرط أساسي للاستخدام Cucumber مع Selenium

ملاحظات: لتسهيل الأمر عليك، قمنا بتجميع ملفات الجرة المطلوب تنزيلها من Maven هنا. مع مرور الوقت، قد يتم تحديث هذه الجرار وتصبح غير متوافقة. يطلب منك تنزيلها باستخدام الطريقة الموضحة أعلاه.

اختبار الأتمتة باستخدام Cucumber مع Selenium.

دعونا ندرس خطوات الاستخدام Cucumber مع السيلينيوم خطوة بخطوة. هنا سوف نغطي ثلاثة سيناريوهات:

  • السيناريو 1: طباعة النص في وحدة التحكم.
  • السيناريو 2: أدخل بيانات اعتماد تسجيل الدخول وأعد تعيين القيمة.
  • السيناريو 3: أدخل بيانات اعتماد تسجيل الدخول على Guru99 وأعد تعيين القيمة. افعل ذلك لمدة 3 مجموعات من البيانات.

السيناريو 1: طباعة النص في وحدة التحكم.

في هذا السيناريو، نقوم فقط بطباعة النص في وحدة التحكم باستخدام Cucumber.

الخطوة 1) إنشاء مشروع في Eclipse.

إنشاء Java مشروع باسم "Cucumberبدافع Selenium"كما هو موضح في لقطة الشاشة أدناه.

اختبار الأتمتة باستخدام Cucumber مع Selenium

اختبار الأتمتة باستخدام Cucumber مع Selenium

الخطوة 2) إضافة ملفات Jar في المشروع.

انقر بزر الماوس الأيمن على المشروع > حدد خصائص > اذهب إلى Java بناء المسار. أضف جميع المكتبات التي تم تنزيلها مسبقًا.

اختبار الأتمتة باستخدام Cucumber مع Selenium

الخطوة 3) إنشاء ملف الميزة

لإنشاء ملف ميزة، قم أولاً بإنشاء مجلد الميزات كما هو موضح أدناه في لقطة الشاشة.

اختبار الأتمتة باستخدام Cucumber مع Selenium

الآن أدخل اسم المجلد "الميزات" وانقر على زر "إنهاء".

اختبار الأتمتة باستخدام Cucumber مع Selenium

اختبار الأتمتة باستخدام Cucumber مع Selenium

الآن، أنشئ ملف ميزة في مجلد "الميزات" باسم "MyTest.feature" - تشبه العملية إنشاء مجلد

اختبار الأتمتة باستخدام Cucumber مع Selenium

ملحوظة: قد تحتاج إلى تثبيت Cucumber Eclipse البرنامج المساعد لهذا العمل. انتقل إلى - مساعدة-> تثبيت برنامج جديد-> انسخ الرابط والصقه http://cucumber.github.io/cucumber-eclipse/update-site/ وتثبيت

الخطوة 4) اكتب السيناريوهات.

الأسطر أدناه مكتوبة في ملف "MyTest.feature" باستخدام لغة Gherkin كما هو موضح أدناه:

Feature: Reset functionality on login page of Application 


Scenario: Verification of Reset button 


Given Open the Firefox and launch the application			


When Enter the Username and Password			


Then Reset the credential			

شرح الكود

خط 1) في هذا الخط نكتب وظائف الأعمال.

خط 2) في هذا السطر نكتب سيناريو للاختبار.

خط 3) في هذا السطر نحدد الشرط المسبق.

خط 4) في هذا السطر نحدد الإجراء الذي يتعين علينا القيام به.

خط 4) في هذا الخط نحدد النتيجة أو النتيجة المتوقعة.

الخطوة 5) كتابة نص برمجي لبرنامج Selenium Testrunner Selenium Cucumber تصميم الإطار

نقوم هنا بإنشاء حزمة "TestRunner" ثم ملف فئة "Runner.java" ضمنها.

package TestRunner;		

import org.junit.runner.RunWith;		
import cucumber.api.CucumberOptions;		
import cucumber.api.junit.Cucumber;		

@RunWith(Cucumber.class)				
@CucumberOptions(features="Features",glue={"StepDefinition"})						
public class Runner 				
{		

}

في ما سبق Cucumber Java رمز المثال، نقوم بتشغيل اختبار الخيار باستخدام التعليقات التوضيحية التالية:

@إركض مع() يخبرنا التعليق التوضيحي عن فئة عداء الاختبار لبدء تنفيذ اختباراتنا.

@CucmberOptions() يتم استخدام التعليق التوضيحي لتعيين بعض الخصائص لاختبار الخيار الخاص بنا مثل ملف الميزة وتعريف الخطوة وما إلى ذلك.

لقطة شاشة لملف TestRunner.

اختبار الأتمتة باستخدام Cucumber مع Selenium

الخطوة 6) إنشاء برنامج نصي لتعريف الخطوة.

الآن هنا نقوم بإنشاء حزمة "StepDefinition" ثم ملف البرنامج النصي "Steps.java" تحتها. هنا نقوم فعليًا بكتابة برنامج نصي Selenium لإجراء الاختبار تحت Cucumber الأساليب.

package StepDefinition;		

import cucumber.api.java.en.Given;		
import cucumber.api.java.en.Then;		
import cucumber.api.java.en.When;		

public class Steps {				

     
    @Given("^Open the Firefox and launch the application$")				
    public void open_the_Firefox_and_launch_the_application() throws Throwable							
    {		
        System.out.println("This Step open the Firefox and launch the application.");					
    }		

    @When("^Enter the Username and Password$")					
    public void enter_the_Username_and_Password() throws Throwable 							
    {		
       System.out.println("This step enter the Username and Password on the login page.");					
    }		

    @Then("^Reset the credential$")					
    public void Reset_the_credential() throws Throwable 							
    {    		
        System.out.println("This step click on the Reset button.");					
    }		

}

في الكود أعلاه، يتم إنشاء الفصل باسم "الخطوات". Cucumber يتم استخدام التعليق التوضيحي للتعيين مع ملف الميزة. يتم تعريف كل طريقة توضيحية:

@منح شرح طريقة فتح فايرفوكس وتشغيل التطبيق

@متى شرح توضيحي لتحديد طريقة إدخال اسم المستخدم وكلمة المرور

@ثم شرح توضيحي لتحديد طريقة إعادة تعيين بيانات الاعتماد

ضمن كل طريقة، نقوم فقط بطباعة رسالة.

فيما يلي لقطة شاشة للبرنامج النصي "Steps.java" وشجرة المشروع، كيف تبدو.

اختبار الأتمتة باستخدام Cucumber مع Selenium

ملحوظة: تعريف الخطوة ليس سوى الخطوات التي تريد تنفيذها وفقًا لطريقة الخيار هذه.

الخطوة 7) تنفيذ البرنامج النصي.

يمكن للمستخدم تنفيذ هذا البرنامج النصي من برنامج تشغيل الاختبار، أي "Runner.java" كما هو موضح في لقطة الشاشة أدناه.

اختبار الأتمتة باستخدام Cucumber مع Selenium

الخطوة 8) تحليل الإخراج.

عند تنفيذ البرنامج النصي 'Runner.java'، فإنه يعرض النص الموجود على وحدة التحكم. وهو نفس النص المحدد في البرنامج النصي "Steps.java".

اختبار الأتمتة باستخدام Cucumber مع Selenium

السيناريو 2: أدخل بيانات اعتماد تسجيل الدخول وأعد تعيين القيمة.

هنا سنقوم فقط بإدخال بيانات الاعتماد في صفحة تسجيل الدخول التجريبية إلى Guru99 وإعادة تعيين القيمة

بالنسبة للسيناريو 2، نحتاج إلى تحديث البرنامج النصي "Steps.java" فقط. هنا نكتب البرنامج النصي Selenium كما هو موضح أدناه. أولاً، نحتاج إلى إضافة Selenium jar لهذا المشروع.

أدخل بيانات اعتماد تسجيل الدخول وأعد تعيين القيمة

الخطوة 1) نقوم هنا بتحديث البرنامج النصي "Steps.java" كما هو موضح في الكود ولقطة الشاشة أدناه.

package StepDefinition;		

import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.firefox.FirefoxDriver;		

import cucumber.api.java.en.Given;		
import cucumber.api.java.en.Then;		
import cucumber.api.java.en.When;		

public class Steps {				

    WebDriver driver;			
    		
    @Given("^Open the Firefox and launch the application$")					
    public void open_the_Firefox_and_launch_the_application() throws Throwable							
    {		
       System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe");					
       driver= new FirefoxDriver();					
       driver.manage().window().maximize();			
       driver.get("http://demo.guru99.com/v4");					
    }		

    @When("^Enter the Username and Password$")					
    public void enter_the_Username_and_Password() throws Throwable 							
    {		
       driver.findElement(By.name("uid")).sendKeys("username12");							
       driver.findElement(By.name("password")).sendKeys("password12");							
    }		

    @Then("^Reset the credential$")					
    public void Reset_the_credential() throws Throwable 							
    {		
       driver.findElement(By.name("btnReset")).click();					
    }		
}		

لقطة شاشة لنص السيلينيوم أعلاه.

أدخل بيانات اعتماد تسجيل الدخول وأعد تعيين القيمة

الخطوة 2) تنفيذ البرنامج النصي.

بعد التحديث نقوم بتشغيل Runner.java.

الخطوة 3) تحليل الإخراج.

في الإخراج يمكنك رؤية ما يلي:

  • تم إطلاق المتصفح.
  • تم افتتاح الموقع التجريبي لبنك Guru99.
  • يتم وضع اسم المستخدم وكلمة المرور في صفحة تسجيل الدخول.
  • إعادة تعيين القيم.

أدخل بيانات اعتماد تسجيل الدخول وأعد تعيين القيمة

السيناريو 3: أدخل بيانات اعتماد تسجيل الدخول على Guru99 وأعد تعيين القيمة. افعل ذلك لمدة 3 مجموعات من البيانات.

نحن هنا بحاجة إلى تحديث كل من "Step.java" وملف الميزة.

الخطوة 1) قم بتحديث ملف الميزة كما هو موضح أدناه:

Here we update the feature file with 'Scenario Outline' and  'examples' syntax.

Feature: Reset functionality on login page of Application				


Scenario Outline: Verification of reset button with numbers of credential


Given Open the Firefox and launch the application				


When Enter the Username <username>and Password <password>				


Then Reset the credential						

Examples:                      		

|username  |password         |		

|User1     |password1        |		

|User2     |password2        |		

|User3     |password3        |

// In this line we define the set of data.

أدخل بيانات اعتماد تسجيل الدخول

الخطوة 2) الآن قم بتحديث البرنامج النصي Step.java.

هنا نقوم بتحديث الطرق لتمرير المعلمات، البرنامج النصي المحدث الموضح أدناه:

package StepDefinition;		

import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.firefox.FirefoxDriver;		

import cucumber.api.java.en.Given;		
import cucumber.api.java.en.Then;		
import cucumber.api.java.en.When;		

public class Steps {				

    WebDriver driver;			
    		
    @Given("^Open the Firefox and launch the application$")					
    public void open_the_Firefox_and_launch_the_application() throws Throwable							
    {		
       System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe");					
       driver= new FirefoxDriver();					
       driver.manage().window().maximize();			
       driver.get("www.demo.guru99.com/v4");					
    }		

    @When("^Enter the Username \"(.*)\" and Password \"(.*)\"$")			
    public void enter_the_Username_and_Password(String username,String password) throws Throwable 							
    {		
       driver.findElement(By.name("uid")).sendKeys(username);					
       driver.findElement(By.name("password")).sendKeys(password);					
    }		

    @Then("^Reset the credential$")					
    public void	Reset_the_credential() throws Throwable 							
    {		
       driver.findElement(By.name("btnReset")).click();					
    }		
}		

أدخل بيانات اعتماد تسجيل الدخول

الخطوة 3) الآن قم بتنفيذ البرنامج النصي المحدث.

تعرض الشاشة أدناه التنفيذ الناجح للبرنامج النصي والوقت الذي تستغرقه كل مجموعة من البيانات.

أدخل بيانات اعتماد تسجيل الدخول

الخطوة 4) تحليل الإخراج.

في الإخراج يمكنك رؤية ما يلي:

يتم تكرار الإخراج أدناه لعدد مجموعات البيانات، أي 3 مجموعات.

  • تم إطلاق المتصفح.
  • تم افتتاح الموقع التجريبي لبنك Guru99.
  • يتم وضع اسم المستخدم وكلمة المرور في صفحة تسجيل الدخول.
  • إعادة تعيين القيم.

أدخل بيانات اعتماد تسجيل الدخول

وفي الختام

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

Cucumber يمكن أن تتكامل مع Selenium باستخدام الخطوات الثلاث التالية

  1. قم بإنشاء ملف ميزة يتم فيه تحديد الميزة والسيناريوهات خطوة بخطوة باستخدام لغة Gherkin.
  2. إنشاء ملف Testrunner. في هذا الملف، قمنا بدمجها Cucumber مع إطار BDD في Selenium. نقوم بتنفيذ هذا البرنامج النصي.
  3. إنشاء تعريف الخطوة، وهو البرنامج النصي السيلينيوم الفعلي المحدد ضمن هذه الحزمة.