Използване на кръстосано тестване на браузъра Selenium уебдрайвер

⚡ Умно обобщение

Използване на кръстосано тестване на браузъра Selenium WebDriver проверява дали уеб приложението се държи последователно в Chrome, Firefox, Safari и Edge. Този урок показва как да комбинирате Selenium Уебдрайвер с TestNG да стартира паралелни сесии, да валидира рендерирането и да мащабира покритието в съвременни настолни и мобилни браузъри.

  • 🌐 Защо това е важно: Реалните потребители отварят една и съща страница в различни браузъри, така че оформленията, скриптовете и стиловете трябва да се поддържат навсякъде, за да се защитят реализациите и достъпността.
  • 🧪 Selenium Настройка на уеб драйвера: Конфигурирайте ChromeDriver, GeckoDriver, EdgeDriver и SafariDriver, след което изберете правилния екземпляр чрез един параметризиран метод.
  • 📱 TestNG паралелни изпълнения: Файл testing.xml с parallel="tests" задейства Chrome, Firefoxи Edge пакети едновременно, намалявайки циклите на обратна връзка за големи регресионни пакети.
  • ✅ Често срещани открити дефекти: Мащабиране на шрифта, промени в оформлението на CSS, JavaБързо се появяват празнини в скриптовите полифили, поддръжка на HTML5, ориентация на изображенията и несъответствия между операционната система и браузъра.
  • 🛠️ Облачни лаборатории и изкуствен интелект: Sauce Labs, BrowserStack и LambdaTest разширяват покритието до хиляди двойки операционна система-браузър, а визуалната регресия, управлявана от изкуствен интелект, и самовъзстановяващите се локатори повишават надеждността.

Междубраузърно тестване в Selenium уебдрайвер

Защо се нуждаем от Cross Browser Test?

Уеб-базираните приложения са много различни от оригиналните настолни приложения. Уеб приложение може да бъде отворено във всеки браузър от крайния потребител. Например, някои хора предпочитат да отварят https://twitter.com in Firefox, докато други използват Chrome, сафари или Microsoft Edge.

На диаграмата по-долу можете да видите, че в по-старите браузъри, полето за вход в Twitter не изобразява заоблените ъгли правилно, докато съвременният Chrome изобразява ъглите по предназначение.

Тестване на различни браузъри

Така че трябва да гарантираме, че уеб приложението ще работи както се очаква във всички популярни браузъри, за да могат повече хора да имат достъп до него и да го използват.

Тази цел може да бъде постигната с Cross Browser Тестване на продукта във всеки браузър в обхвата.

Причини за проблеми с различни браузъри

  1. Несъответствие на размера на шрифта в различните браузъри.
  2. JavaИмплементациите на скриптовите двигатели се различават в Chrome (V8), Firefox (Паяк-маймуна), Сафари (JavaScriptCore) и Edge.
  3. Разлики във валидирането на CSS и HTML, включително обработката на префикси на доставчици.
  4. Непоследователна или частична поддръжка на функциите HTML5 и ECMAScript в по-стари версии на браузъра.
  5. Подравняване на страници, оразмеряване на div елементи и вариации на рендиране на flexbox или grid.
  6. Разлики в ориентацията на изображението и цветовия профил.
  7. Несъвместимост на браузъра с основната операционна система, включително особености на мобилния WebView Android и iOS.

Как да направите кръстосано тестване на браузъра

Ако използваме Selenium WebDriver, можем да автоматизираме тестови случаи срещу Chrome, Firefox, Microsoft Edgeи браузърите Safari.

За да изпълняваме тестови случаи с различни браузъри на една и съща машина едновременно, можем да интегрираме TestNG рамка с Selenium WebDriver. За по-широко покритие на операционните системи и версиите, един и същ пакет може да бъде насочен към облачни мрежи като Sauce Labs, BrowserStack или LambdaTest чрез отдалечена крайна точка на WebDriver.

Вашият testing.xml ще изглежда така:

Тестване на различни браузъри

Този testing.xml ще се съпостави с Тестов случай което изглежда така:

Тестване на различни браузъри

Тъй като testing.xml има множество тестови етикети („ChromeTest“, „FirefoxTest', 'EdgeTest'), този тестов случай ще се изпълни веднъж за всеки браузър.

Първият тест „ChromeTest“ ще предаде стойността на параметъра „browser“ като „chrome“, така че ChromeDriver ще бъде изпълнен. Този тестов случай ще се изпълнява в браузъра Chrome.

Вторият тестFirefoxTest" ще предаде стойността на параметъра "браузър" като "Firefox„, така че FirefoxДрайверът ще бъде изпълнен. Този тестов случай ще се изпълнява на Firefox браузър. Добавянето на тест за Edge или Safari следва същия модел.

Guru99CrossBrowserScript.java

Пълен 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");
	}
}

testing.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>

ЗАБЕЛЕЖКА: За да стартирате теста, щракнете с десния бутон върху testing.xml, изберете „Изпълни като“ и щракнете TestNG Апартамент.

 Тестване на различни браузъри

Мащабиране с облачни браузърни мрежи

Работещи Selenium WebDriver локално покрива два или три браузъра, но реалните потребители имат достъп до сайтове от стотици комбинации от операционни системи и браузъри. Облачни лаборатории като например Лаборатории за сосове, BrowserStack, и Ламбда тест изложи отдалечена крайна точка на WebDriver. Насочете същото Selenium тестове в мрежата, преминават през желаните възможности за браузъра, версията, операционната система и резолюцията, а пакетът се мащабира хоризонтално, без да управлява локални драйвери.

Съвременните мрежи също така показват функции, подпомагани от изкуствен интелект, като например визуално регресионно диференциране, самовъзстановяващи се локатори на елементи и оценяване на нестабилността, което намалява разходите за поддръжка на дълготрайни пакети за кросбраузърно тестване.

Забележка: Дадената програма е създадена и тествана на Selenium 4, Хром, Firefox, и Microsoft EdgeАко програмите дават грешка, моля, актуализирайте двоичните файлове на драйвера, за да съответстват на инсталираната версия на браузъра ви, или използвайте Selenium Мениджър, който автоматично разрешава проблеми с драйверите.

Изтеглете Selenium Проектни файлове за демонстрацията в този урок

Въпроси и Отговори

Кросбраузърното тестване е функционална и визуална техника за тестване, която проверява дали уеб приложение работи по същия начин в Chrome. Firefox, Safari и Microsoft Edge на настолни компютри и мобилни устройства, включително различни операционни системи и размери на viewport-овете.

Selenium WebDriver предоставя единен API, който управлява Chrome, Firefox, Edge и Safari чрез официалния протокол W3C WebDriver. Същият тестов код работи във всеки браузър, което прави Selenium WebDriver е де факто стандартът за автоматизация на браузърите и кросбраузърно тестване.

TestNG използва файла testing.xml с parallel="tests" и thread-count, за да стартира всеки тестов таг в собствена нишка. В комбинация с параметризирана настройка @BeforeTest, същото Selenium Пакетът WebDriver работи на Chrome, Firefoxи Edge едновременно, намалявайки общото време за изпълнение.

Sauce Labs, BrowserStack и LambdaTest предоставят хоствани Selenium Мрежи, които показват хиляди комбинации от операционни системи и браузъри, включително iOS, Safari и Android Chrome. Насочете RemoteWebDriver към крайната точка на мрежата и предоставете желаните възможности за изпълнение на същия код в голям мащаб.

Визуалните регресионни двигатели, задвижвани от изкуствен интелект, като тези, вградени в Applitools, Percy и визуалните модули на BrowserStack и LambdaTest, сравняват екранните снимки семантично, вместо пиксел по пиксел. Те игнорират очакваните разлики в анти-алиасинга или рендирането на шрифтове между Chrome, Firefox, Safari и Edge, като същевременно улавят истински регресии на оформлението, което рязко намалява фалшивите положителни резултати в конвейерите за кросбраузърно тестване.

Да. Съвременни рамки като Healenium, Testim, Mabl и функциите на изкуствения интелект в Selenium IDE анализира DOM и предлага стабилни XPath или CSS селектори. Когато локатор се повреди поради промяна в потребителския интерфейс, генерираните от изкуствен интелект селектори се самовъзстановяват, като оценяват близките елементи и избират най-близкото съвпадение, което поддържа пакетите за кросбраузърно тестване „зелени“ с по-малко ръчна поддръжка.

Често срещани дефекти включват несъответствия в рендирането на шрифтове и CSS, JavaНесъответствия в скриптовия енджин, неработеща поддръжка на HTML5 или ES функции, проблеми с ориентацията на изображенията, проблеми с подравняването на страниците, липсващи префикси на доставчици и специфични за операционната система повреди в iOS Safari или Android Chrome.

Обобщете тази публикация с: