การทดสอบข้ามเบราว์เซอร์โดยใช้ Selenium ไดรเวอร์เว็บ

การทดสอบข้ามเบราว์เซอร์โดยใช้ Selenium

การทดสอบข้ามเบราว์เซอร์ คือการทดสอบการทำงานประเภทหนึ่งเพื่อตรวจสอบว่าเว็บแอปพลิเคชันของคุณทำงานตามที่คาดไว้ในเบราว์เซอร์ที่แตกต่างกัน

การทดสอบข้ามเบราว์เซอร์โดยใช้ Selenium

เหตุใดเราจึงต้องทดสอบข้ามเบราว์เซอร์?

แอพพลิเคชั่นบนเว็บมีความแตกต่างกันโดยสิ้นเชิง Windows การใช้งาน ผู้ใช้ปลายทางสามารถเปิดแอปพลิเคชันเว็บในเบราว์เซอร์ใดก็ได้ เช่น บางคนชอบเปิด https://twitter.com in Firefox เบราว์เซอร์ ในขณะที่ตัวอื่นสามารถใช้ได้ เบราว์เซอร์ Chrome or IE.

ในแผนภาพด้านล่าง คุณจะสังเกตได้ว่าใน IEช่องเข้าสู่ระบบของ Twitter ไม่แสดงเส้นโค้งที่ทุกมุม แต่เราสามารถมองเห็นได้ในเบราว์เซอร์ Chrome

การทดสอบข้ามเบราว์เซอร์

ดังนั้นเราจึงต้องแน่ใจว่าเว็บแอปพลิเคชันจะทำงานตามที่คาดไว้ในเบราว์เซอร์ยอดนิยมทั้งหมด เพื่อให้ผู้คนสามารถเข้าถึงและใช้งานได้มากขึ้น

แรงจูงใจนี้สามารถเติมเต็มได้ด้วย Cross Browser การทดสอบ ของผลิตภัณฑ์

สาเหตุของปัญหาเบราว์เซอร์ข้าม

  1. ขนาดตัวอักษรไม่ตรงกันในเบราว์เซอร์ที่แตกต่างกัน
  2. Javaการใช้งานสคริปต์อาจแตกต่างกันได้
  3. อาจมีความแตกต่างในการตรวจสอบ CSS, HTML
  4. เบราว์เซอร์บางตัวยังไม่รองรับ HTML5
  5. การจัดตำแหน่งหน้าและขนาด div
  6. การวางแนวรูปภาพ
  7. เบราว์เซอร์เข้ากันไม่ได้กับระบบปฏิบัติการ ฯลฯ

วิธีทำการทดสอบข้ามเบราว์เซอร์

ถ้าเราใช้ Selenium WebDriver เราสามารถสร้างกรณีทดสอบอัตโนมัติโดยใช้ Internet Explorer, FireFox, Chrome, เบราว์เซอร์ซาฟารี

เพื่อดำเนินการกรณีทดสอบกับเบราว์เซอร์ที่แตกต่างกันในเครื่องเดียวกันในเวลาเดียวกัน เราสามารถบูรณาการได้ TestNG กรอบด้วย Selenium เว็บไดร์เวอร์

Testing.xml ของคุณจะมีลักษณะเช่นนั้น

การทดสอบข้ามเบราว์เซอร์

Testing.xml นี้จะแมปกับไฟล์ กรณีทดสอบ ซึ่งจะมีลักษณะเช่นนั้น

การทดสอบข้ามเบราว์เซอร์

ที่นี่เนื่องจากการทดสอบ.xml มีแท็กทดสอบสองแท็ก ('ChromeTest','FirefoxTest') กรณีทดสอบนี้จะดำเนินการสองครั้งสำหรับเบราว์เซอร์ 2 ตัวที่แตกต่างกัน

การทดสอบครั้งแรก 'ChromeTest' จะส่งผ่านค่าของพารามิเตอร์ 'เบราว์เซอร์' เป็น 'chrome' ดังนั้น ChromeDriver จะถูกดำเนินการ กรณีทดสอบนี้จะทำงานบนเบราว์เซอร์ Chrome

การทดสอบครั้งที่สอง 'FirefoxTest' จะผ่านค่าของพารามิเตอร์ 'browser' เป็น 'Firefox' ดังนั้น Firefoxไดรเวอร์จะถูกดำเนินการ กรณีทดสอบนี้จะทำงานบน FireFox เบราว์เซอร์

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("https://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");
	}
}

การทดสอบ.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>

หมายเหตุ: หากต้องการรันการทดสอบ ให้คลิกขวาที่ การทดสอบ.xml, เลือกเรียกใช้เป็นแล้วคลิก TestNG

การทดสอบข้ามเบราว์เซอร์

สรุป

  1. การทดสอบข้ามเบราว์เซอร์เป็นเทคนิคในการทดสอบเว็บแอปพลิเคชันกับเว็บเบราว์เซอร์ต่างๆ
  2. Selenium สามารถรองรับประเภทต่างๆได้ เครื่องมือทดสอบข้ามเบราว์เซอร์ สำหรับระบบอัตโนมัติ
  3. Selenium สามารถรวมเข้ากับ TestNG เพื่อทำการทดสอบหลายเบราว์เซอร์
  4. จากพารามิเตอร์ในการทดสอบ.xml เราสามารถส่งชื่อเบราว์เซอร์ได้ และในกรณีทดสอบ เราสามารถสร้างการอ้างอิง WebDriver ตามลำดับได้

หมายเหตุ โปรแกรมที่กำหนดถูกสร้างและทดสอบบน selenium 3.0.1, Chrome 56.0.2924.87 Firefox 47.0.2 & Microsoft Edge 14.14393. หากโปรแกรมแสดงข้อผิดพลาด โปรดอัปเดตไดรเวอร์

ดาวน์โหลด Selenium ไฟล์โครงการสำหรับการสาธิตในบทช่วยสอนนี้