Kiểm tra trình duyệt chéo bằng cách sử dụng Selenium webdriver

⚡ Tóm tắt thông minh

Kiểm tra trình duyệt chéo bằng cách sử dụng Selenium WebDriver xác minh rằng ứng dụng web hoạt động nhất quán trên Chrome. Firefox, Safari và Edge. Hướng dẫn này trình bày cách kết hợp chúng. Selenium WebDriver với TestNG Khởi chạy các phiên song song, xác thực quá trình hiển thị và mở rộng phạm vi phủ sóng trên các trình duyệt máy tính và thiết bị di động hiện đại.

  • 🌐 Tại sao nó quan trọng: Người dùng thực mở cùng một trang trên các trình duyệt khác nhau, vì vậy bố cục, tập lệnh và kiểu dáng phải hoạt động nhất quán ở mọi nơi để bảo vệ tỷ lệ chuyển đổi và khả năng truy cập.
  • 🧪 Selenium Thiết lập WebDriver: Cấu hình ChromeDriver, GeckoDriver, EdgeDriver và SafariDriver, sau đó chọn phiên bản phù hợp thông qua một phương thức tham số hóa duy nhất.
  • 📱 TestNG Chạy song song: Tệp testing.xml với thuộc tính parallel=”tests” sẽ khởi chạy Chrome. Firefoxvà các bộ phần mềm Edge cùng lúc, rút ​​ngắn chu kỳ phản hồi cho các gói kiểm thử hồi quy lớn.
  • Các lỗi thường gặp: Điều chỉnh kích thước phông chữ, thay đổi bố cục CSS, JavaCác vấn đề như thiếu sót trong việc bổ sung polyfill cho script, hỗ trợ HTML5, hướng ảnh và sự không tương thích giữa hệ điều hành và trình duyệt nhanh chóng được phát hiện.
  • 🛠️ Phòng thí nghiệm đám mây và trí tuệ nhân tạo: Sauce Labs, BrowserStack và LambdaTest mở rộng phạm vi kiểm thử lên hàng nghìn cặp hệ điều hành-trình duyệt, trong khi khả năng hồi quy hình ảnh dựa trên AI và các công cụ định vị tự phục hồi giúp nâng cao độ tin cậy.

Kiểm thử tương thích trình duyệt trong Selenium webdriver

Tại sao chúng ta cần Kiểm tra trình duyệt chéo?

Các ứng dụng web rất khác so với các ứng dụng máy tính để bàn truyền thống. Người dùng cuối có thể mở một ứng dụng web trong bất kỳ trình duyệt nào. Ví dụ, một số người thích mở ứng dụng web trên trình duyệt khác nhau. https://twitter.com in Firefox, trong khi những người khác sử dụng cơ rôm, Safari, hoặc là Microsoft Edge.

Trong sơ đồ bên dưới, bạn có thể thấy rằng ở các trình duyệt cũ hơn, hộp đăng nhập của Twitter không hiển thị các góc bo tròn một cách chính xác, trong khi Chrome hiện đại hiển thị các góc đúng như thiết kế.

Kiểm tra trình duyệt chéo

Vì vậy, chúng ta cần đảm bảo rằng ứng dụng web hoạt động như mong đợi trên tất cả các trình duyệt phổ biến, để nhiều người hơn có thể truy cập và sử dụng nó.

Mục tiêu này có thể được đáp ứng bằng cách sử dụng trình duyệt chéo. Kiểm tra của sản phẩm trên mọi trình duyệt nằm trong phạm vi áp dụng.

Nguyên nhân gây ra sự cố tương thích trình duyệt

  1. Kích thước phông chữ không khớp trong các trình duyệt khác nhau.
  2. JavaViệc triển khai công cụ kịch bản khác nhau giữa các phiên bản Chrome (V8). Firefox (Khỉ nhện), Safari (JavaScriptCore), và Edge.
  3. Sự khác biệt về xác thực CSS và HTML, bao gồm cả việc xử lý tiền tố của nhà cung cấp.
  4. Hỗ trợ tính năng HTML5 và ECMAScript không nhất quán hoặc không đầy đủ ở các phiên bản trình duyệt cũ hơn.
  5. Căn chỉnh trang, kích thước thẻ div và các biến thể hiển thị bằng flexbox hoặc lưới.
  6. Sự khác biệt về hướng ảnh và cấu hình màu sắc.
  7. Sự không tương thích giữa trình duyệt và hệ điều hành cơ bản, bao gồm cả những trục trặc của WebView trên thiết bị di động. Android và iOS.

Cách thực hiện kiểm tra trình duyệt chéo

Nếu chúng tôi đang sử dụng Selenium Với WebDriver, chúng ta có thể tự động hóa các trường hợp kiểm thử trên Chrome. Firefox, Microsoft Edgevà trình duyệt Safari.

Để thực hiện các trường hợp kiểm thử với các trình duyệt khác nhau trên cùng một máy tính cùng một lúc, chúng ta có thể tích hợp... TestNG khuôn khổ với Selenium WebDriver. Để có phạm vi phủ sóng hệ điều hành và phiên bản rộng hơn, bộ công cụ tương tự có thể được trỏ đến các nền tảng điện toán đám mây như Sauce Labs, BrowserStack hoặc LambdaTest thông qua một điểm cuối WebDriver từ xa.

Tệp testing.xml của bạn sẽ trông như thế này:

Kiểm tra trình duyệt chéo

Tệp test.xml này sẽ ánh xạ với Trường hợp thử nghiệm Nó trông như thế này:

Kiểm tra trình duyệt chéo

Vì tệp testing.xml có nhiều thẻ Test ('ChromeTest', 'FirefoxTrường hợp kiểm thử này sẽ được thực thi một lần cho mỗi trình duyệt, ví dụ như 'Test', 'EdgeTest'.

Bài kiểm tra đầu tiên 'ChromeTest' sẽ truyền giá trị của tham số 'browser' là 'chrome', do đó ChromeDriver sẽ được thực thi. Trường hợp kiểm thử này sẽ chạy trên trình duyệt Chrome.

Bài kiểm tra thứ hai 'FirefoxTest' sẽ chuyển giá trị của tham số 'trình duyệt' dưới dạng 'Firefox', Vì thế FirefoxTrình điều khiển sẽ được thực thi. Trường hợp kiểm thử này sẽ chạy trên... Firefox Trình duyệt. Việc thêm bài kiểm tra Edge hoặc Safari cũng tuân theo cùng một quy trình.

Guru99CrossBrowserScript.java

Hoàn thành Code:

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.openqa.selenium.safari.SafariDriver;
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 msedgedriver.exe
			System.setProperty("webdriver.edge.driver",".\\msedgedriver.exe");
			//create Edge instance
			driver = new EdgeDriver();
		}
		//Check if parameter passed as 'Safari'
		else if(browser.equalsIgnoreCase("Safari")){
			//SafariDriver ships with macOS, no driver path needed
			driver = new SafariDriver();
		}
		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");
	}
}

thử nghiệm.xml

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

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

<suite name="TestSuite" thread-count="3" 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>

LƯU Ý: Để chạy thử nghiệm, hãy nhấp chuột phải vào thử nghiệm.xml, chọn Chạy với quyền quản trị, rồi nhấp chuột TestNG Thượng hạng.

 Kiểm tra trình duyệt chéo

Mở rộng quy mô với Cloud Browser Grids

Chạy Selenium WebDriver hỗ trợ cục bộ hai hoặc ba trình duyệt, nhưng người dùng thực tế truy cập các trang web từ hàng trăm hệ điều hành và trình duyệt khác nhau. Các phòng thí nghiệm đám mây như... Phòng thí nghiệm nước sốt, BrowserStackKiểm tra Lambda Hiển thị điểm cuối WebDriver từ xa. Trỏ cùng một điểm cuối. Selenium Các bài kiểm tra trên lưới, đáp ứng các yêu cầu về khả năng mong muốn cho trình duyệt, phiên bản, hệ điều hành và độ phân giải, và bộ công cụ có thể mở rộng theo chiều ngang mà không cần quản lý trình điều khiển cục bộ.

Các hệ thống lưới hiện đại cũng tích hợp các tính năng hỗ trợ bởi trí tuệ nhân tạo như so sánh hồi quy trực quan, định vị phần tử tự phục hồi và chấm điểm độ không ổn định, giúp giảm chi phí bảo trì cho các bộ kiểm thử đa trình duyệt có tuổi thọ cao.

Lưu ý: Chương trình được cung cấp đã được xây dựng và kiểm thử trên Selenium 4, Chrome, Firefoxvà Microsoft EdgeNếu chương trình báo lỗi, vui lòng cập nhật các tệp nhị phân trình điều khiển cho phù hợp với phiên bản trình duyệt đã cài đặt của bạn, hoặc sử dụng... Selenium Quản lý tự động giải quyết các vấn đề về trình điều khiển.

Tải về Selenium Tệp dự án cho bản demo trong hướng dẫn này

Câu Hỏi Thường Gặp

Kiểm thử tương thích đa trình duyệt là một kỹ thuật kiểm thử chức năng và hình ảnh nhằm xác minh rằng ứng dụng web hoạt động giống nhau trên trình duyệt Chrome. Firefox, Safarivà Microsoft Edge Trên cả máy tính để bàn và thiết bị di động, bao gồm các hệ điều hành và kích thước khung nhìn khác nhau.

Selenium WebDriver cung cấp một API duy nhất để điều khiển Chrome, Firefox, Edge và Safari thông qua giao thức WebDriver chính thức của W3C. Mã kiểm thử tương tự chạy trên bất kỳ trình duyệt nào, điều này giúp Selenium WebDriver là tiêu chuẩn thực tế cho tự động hóa trình duyệt và kiểm thử tương thích đa trình duyệt.

TestNG Sử dụng tệp testing.xml với parallel=”tests” và thread-count để khởi chạy mỗi thẻ Test trong một luồng riêng biệt. Kết hợp với thiết lập @BeforeTest có tham số, phương pháp tương tự cũng được áp dụng. Selenium Bộ công cụ WebDriver chạy trên trình duyệt Chrome. Firefoxvà Edge đồng thời, giúp giảm thời gian thực thi tổng thể.

Sauce Labs, BrowserStack và LambdaTest cung cấp dịch vụ lưu trữ trên máy chủ. Selenium Các lưới hiển thị hàng ngàn sự kết hợp giữa hệ điều hành và trình duyệt, bao gồm cả iOS Safari và... Android Chrome. Trỏ một RemoteWebDriver đến điểm cuối của lưới và truyền các khả năng mong muốn để chạy cùng một mã ở quy mô lớn.

Các công cụ kiểm thử hồi quy hình ảnh dựa trên trí tuệ nhân tạo, chẳng hạn như những công cụ được tích hợp trong Applitools, Percy và các mô-đun hình ảnh của BrowserStack và LambdaTest, so sánh ảnh chụp màn hình về mặt ngữ nghĩa thay vì từng pixel một. Chúng bỏ qua những khác biệt dự kiến ​​về khử răng cưa hoặc hiển thị phông chữ giữa Chrome, FirefoxHỗ trợ Safari và Edge, đồng thời vẫn phát hiện được các lỗi bố cục thực sự, giúp giảm đáng kể tỷ lệ báo động sai trong quy trình kiểm thử tương thích trình duyệt.

Đúng vậy. Các framework hiện đại như Healenium, Testim, Mabl, và các tính năng AI trong Selenium IDE phân tích DOM và đề xuất các bộ chọn XPath hoặc CSS ổn định. Khi một bộ định vị bị lỗi do thay đổi giao diện người dùng, các bộ chọn do AI tạo ra sẽ tự sửa lỗi bằng cách chấm điểm các phần tử lân cận và chọn phần tử phù hợp nhất, giúp các bộ kiểm thử đa trình duyệt luôn hoạt động tốt với ít công việc bảo trì thủ công hơn.

Các lỗi thường gặp bao gồm sự không khớp về phông chữ và hiển thị CSS. JavaCác vấn đề như sự không nhất quán trong công cụ xử lý tập lệnh, lỗi hỗ trợ tính năng HTML5 hoặc ES, sự cố về hướng hình ảnh, vấn đề căn chỉnh trang, thiếu tiền tố nhà cung cấp và các lỗi cụ thể của hệ điều hành trên iOS Safari hoặc Android Chrome.

Tóm tắt bài viết này với: