Кроссбраузерное тестирование с использованием Selenium Вебдрайвер

⚡ Умное резюме

Кроссбраузерное тестирование с использованием Selenium WebDriver проверяет, что веб-приложение работает корректно в Chrome. FirefoxSafari и Edge. В этом руководстве показано, как их объединить. Selenium Вебдрайвер с TestNG для запуска параллельных сессий, проверки рендеринга и масштабирования покрытия в современных настольных и мобильных браузерах.

  • 🌐 Почему это важно: Реальные пользователи открывают одну и ту же страницу в разных браузерах, поэтому макеты, скрипты и стили должны оставаться неизменными везде, чтобы обеспечить конверсию и доступность.
  • 🧪 Selenium Настройка WebDriver: Настройте ChromeDriver, GeckoDriver, EdgeDriver и SafariDriver, а затем выберите нужный экземпляр с помощью единого параметризованного метода.
  • 📱 TestNG параллельные запуски: Файл testing.xml с параметром parallel=”tests” запускает Chrome. Firefoxи одновременно с пакетами Edge, сокращая циклы обратной связи для больших наборов регрессионных тестов.
  • Наиболее часто выявляемые дефекты: Масштабирование шрифтов, сдвиги CSS-макета, JavaБыстро выявляются проблемы с полифилами скриптов, поддержкой HTML5, ориентацией изображений и несоответствием операционной системы и браузера.
  • 🇧🇷 Облачные лаборатории и ИИ: Sauce Labs, BrowserStack и LambdaTest расширяют охват до тысяч пар ОС-браузер, а визуальная регрессия на основе ИИ и самовосстанавливающиеся локаторы повышают надежность.

Кроссбраузерное тестирование в Selenium Вебдрайвер

Зачем нам нужно кроссбраузерное тестирование?

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

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

Кросс-браузерное тестирование

Поэтому нам необходимо обеспечить корректную работу веб-приложения во всех популярных браузерах, чтобы больше людей могли получить к нему доступ и использовать его.

Эта цель может быть достигнута с помощью кроссбраузерной интеграции. Тестирование Продукт будет доступен во всех браузерах, входящих в область действия.

Причины проблем с совместимостью в разных браузерах

  1. Несоответствие размера шрифта в разных браузерах.
  2. JavaРеализации механизма выполнения скриптов различаются в разных версиях Chrome (V8). Firefox (SpiderMonkey), Safari (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 будет выглядеть примерно так:

Кросс-браузерное тестирование

Этот файл test.xml будет сопоставляться с Тестовый кейс который выглядит вот так:

Кросс-браузерное тестирование

Поскольку в файле testing.xml содержится несколько тегов Test ('ChromeTest', 'FirefoxЭтот тестовый случай будет выполнен один раз для каждого браузера.

В первом тесте '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");
	}
}

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

ПРИМЕЧАНИЕ: Чтобы запустить тест, щелкните правой кнопкой мыши на test.xmlвыберите «Запустить как» и нажмите TestNG Suite.

 Кросс-браузерное тестирование

Масштабирование с помощью облачных браузерных сетей.

Бег Selenium Локально WebDriver поддерживает всего два или три браузера, но реальные пользователи получают доступ к сайтам из сотен комбинаций операционных систем и браузеров. Облачные лаборатории, такие как... Соус Лаборатории, BrowserStack и LambdaTest Предоставьте доступ к удаленной конечной точке WebDriver. Укажите ту же самую точку доступа. Selenium Тесты, проводимые в распределенной среде, подтверждают соответствие требуемым параметрам браузера, версии, ОС и разрешения, а набор тестов масштабируется горизонтально без необходимости управления локальными драйверами.

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

Примечание: Данная программа была разработана и протестирована на Selenium 4, Хром, Firefox и Microsoft EdgeЕсли программы выдают ошибку, обновите исполняемые файлы драйверов в соответствии с установленной версией вашего браузера или используйте... Selenium Менеджер, который автоматически находит драйверы.

Скачать Selenium Файлы проекта для демонстрации в этом руководстве

Часто задаваемые вопросы (FAQ)

Кроссбраузерное тестирование — это метод функционального и визуального тестирования, который проверяет, работает ли веб-приложение одинаково в Chrome. Firefox, Сафари и Microsoft Edge На настольных компьютерах и мобильных устройствах, включая различные операционные системы и размеры области просмотра.

Selenium WebDriver предоставляет единый API для работы Chrome. FirefoxEdge и Safari работают через официальный протокол W3C WebDriver. Один и тот же тестовый код запускается в любом браузере, что делает его удобным для использования. Selenium WebDriver — это де-факто стандарт для автоматизации браузерного тестирования и кроссбраузерного тестирования.

TestNG Использует файл testing.xml с параметрами parallel=”tests” и thread-count для запуска каждого тега Test в отдельном потоке. В сочетании с параметризованной настройкой @BeforeTest, тот же самый Selenium Пакет WebDriver работает в Chrome. Firefoxи Edge одновременно, что позволяет сократить общее время выполнения.

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

Системы визуальной регрессии на основе ИИ, такие как встроенные в Applitools, Percy и визуальные модули BrowserStack и LambdaTest, сравнивают скриншоты семантически, а не попиксельно. Они игнорируют ожидаемые различия в сглаживании или отрисовке шрифтов между Chrome и Chrome. FirefoxВ браузерах Safari и Edge по-прежнему выявляются реальные регрессии в макетах, что значительно снижает количество ложных срабатываний в конвейерах кроссбраузерного тестирования.

Да. Современные фреймворки, такие как Healenium, TestimМабл и функции ИИ в Selenium IDE анализирует DOM и предлагает стабильные селекторы XPath или CSS. Когда локатор перестаёт работать из-за изменений в пользовательском интерфейсе, сгенерированные ИИ селекторы самовосстанавливаются, оценивая близлежащие элементы и выбирая наиболее подходящее совпадение, что обеспечивает корректную работу кроссбраузерных тестовых наборов за счёт сокращения ручного обслуживания.

К распространённым дефектам относятся несоответствия в отображении шрифтов и CSS. JavaНесоответствия в работе скриптового движка, некорректная поддержка функций HTML5 или ES, проблемы с ориентацией изображений, проблемы с выравниванием страниц, отсутствие префиксов поставщиков и специфические для ОС сбои в Safari на iOS. Android Chrome.

Подведем итог этой публикации следующим образом: