اختبار عبر المتصفحات باستخدام Selenium WebDriver

اختبار عبر المتصفح باستخدام السيلينيوم

عبر متصفح اختبار هو نوع من الاختبار الوظيفي للتأكد من أن تطبيق الويب الخاص بك يعمل كما هو متوقع في متصفحات مختلفة.

اختبار عبر المتصفح باستخدام السيلينيوم

لماذا نحتاج إلى اختبار عبر المتصفحات؟

تختلف التطبيقات المستندة إلى الويب تمامًا عن Windows التطبيقات. يمكن للمستخدم النهائي فتح تطبيق ويب في أي متصفح. على سبيل المثال، بعض الناس يفضلون فتح https://twitter.com in Firefox browser, بينما يمكن للآخرين استخدام متصفح كروم or IE.

في الرسم البياني أدناه يمكنك ملاحظة ذلك IEتسجيل الدخول box تويتر ليس شوwing منحنى في جميع الزوايا، ولكننا قادرون على رؤيته في متصفح كروم.

عبر متصفح اختبار

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

يمكن تحقيق هذا الدافع باستخدام Cross Browser الاختبار للمنتج.

السبب مشاكل عبر المتصفح

  1. عدم تطابق حجم الخط في المتصفحات المختلفة.
  2. يمكن أن يكون تنفيذ JavaScript مختلفًا.
  3. يمكن أن يكون هناك اختلاف في التحقق من صحة CSS وHTML.
  4. لا تزال بعض المتصفحات لا تدعم HTML5.
  5. محاذاة الصفحة وحجم div.
  6. اتجاه الصورة.
  7. عدم توافق المتصفح مع نظام التشغيل. إلخ.

كيفية إجراء اختبار عبر المتصفح

إذا كنا نستخدم Selenium WebDriver، فيمكننا أتمتة حالات الاختبار باستخدام Internet Explorer، FireFox، متصفحات كروم، سفاري.

لتنفيذ حالات الاختبار مع متصفحات مختلفة في نفس الجهاز وفي نفس الوقت يمكننا التكامل اختبار الإطار مع السيلينيوم WebDriver.

سيبدو ملف test.xml الخاص بك هكذا،

عبر متصفح اختبار

سيتم تعيين ملف test.xml هذا مع ملف حالة الاختبار والتي سوف تبدو هكذا

عبر متصفح اختبار

هنا لأن ملف test.xml يحتوي على علامتي اختبار ("ChromeTest" و"FirefoxTest')، سيتم تنفيذ حالة الاختبار هذه مرتين لمتصفحين مختلفين.

سيمرر الاختبار الأول "ChromeTest" قيمة المعلمة "browser" كـ "chrome" لذلك سيتم تنفيذ ChromeDriver. سيتم تشغيل حالة الاختبار هذه على متصفح Chrome.

الاختبار الثاني"Firefox"الاختبار" سوف يمرر قيمة المعلمة "المتصفح" كـ "Firefox' لذا Firefoxسيتم إعدام السائق سيتم تشغيل حالة الاختبار هذه FireFox browser.

Guru99CrossBrowserScript.java

كود كامل:

package parallelTest;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class CrossBrowserScript {

	WebDriver driver;

	/**
	 * This function will execute before each Test tag in testng.xml
	 * @param browser
	 * @throws Exception
	 */
	@BeforeTest
	@Parameters("browser")
	public void setup(String browser) throws Exception{
		//Check if parameter passed from TestNG is 'firefox'
		if(browser.equalsIgnoreCase("firefox")){
		//create firefox instance
			System.setProperty("webdriver.gecko.driver", ".\\geckodriver.exe");
			driver = new FirefoxDriver();
		}
		//Check if parameter passed as 'chrome'
		else if(browser.equalsIgnoreCase("chrome")){
			//set path to chromedriver.exe
			System.setProperty("webdriver.chrome.driver",".\\chromedriver.exe");
			//create chrome instance
			driver = new ChromeDriver();
		}
		//Check if parameter passed as 'Edge'
				else if(browser.equalsIgnoreCase("Edge")){
					//set path to Edge.exe
					System.setProperty("webdriver.edge.driver",".\\MicrosoftWebDriver.exe");
					//create Edge instance
					driver = new EdgeDriver();
				}
		else{
			//If no browser passed throw exception
			throw new Exception("Browser is not correct");
		}
		driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
	}
	
	@Test
	public void testParameterWithXML() throws InterruptedException{
		driver.get("http://demo.guru99.com/V4/");
		//Find user name
		WebElement userName = driver.findElement(By.name("uid"));
		//Fill user name
		userName.sendKeys("guru99");
		//Find password
		WebElement password = driver.findElement(By.name("password"));
		//Fill password
		password.sendKeys("guru99");
	}
}

test.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="TestSuite" thread-count="2" parallel="tests" >

<test name="ChromeTest">

<parameter name="browser" value="Chrome" />

<classes>

<class name="parallelTest.CrossBrowserScript">

</class>

</classes>

</test>

<test name="FirefoxTest">

<parameter name="browser" value="Firefox" />

<classes>

<class name="parallelTest.CrossBrowserScript">

</class>

</classes>

</test>

<test name="EdgeTest">

<parameter name="browser" value="Edge" />

<classes>

<class name="parallelTest.CrossBrowserScript">

</class>

</classes>

</test>

</suite>

NOTE: لإجراء الاختبار، انقر بزر الماوس الأيمن على اختبار.xml، حدد تشغيل باسم، ثم انقر فوق TestNG

عبر متصفح اختبار

نبذة عامة

  1. يعد الاختبار عبر المتصفح تقنية لاختبار تطبيقات الويب باستخدام متصفحات الويب المختلفة.
  2. يمكن أن يدعم السيلينيوم أنواعًا مختلفة من أداة اختبار عبر المتصفح للأتمتة.
  3. يمكن دمج السيلينيوم مع TestNG لإجراء اختبار المتصفحات المتعددة.
  4. من خلال المعلمات الموجودة في ملف test.xml، يمكننا تمرير اسم المتصفح، وفي حالة اختبار، يمكننا إنشاء مرجع WebDriver وفقًا لذلك.

ملحوظة: تم إنشاء البرنامج المحدد واختباره على السيلينيوم 3.0.1، وChrome 56.0.2924.87، Firefox 47.0.2 و Microsoft الحافة 14.14393. إذا أعطت البرامج خطأ، يرجى تحديث برنامج التشغيل

قم بتنزيل ملفات مشروع السيلينيوم للعرض التوضيحي في هذا البرنامج التعليمي