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

Зачем нам нужно кроссбраузерное тестирование?
Веб-приложения сильно отличаются от нативных настольных приложений. Веб-приложение может быть открыто конечным пользователем в любом браузере. Например, некоторые люди предпочитают открывать https://twitter.com in Firefoxв то время как другие используют Chrome, Сафари или Microsoft Edge.
На приведенной ниже диаграмме видно, что в старых браузерах форма входа в Twitter отображается с закругленными углами некорректно, в то время как в современном Chrome углы отображаются так, как задумано.
Поэтому нам необходимо обеспечить корректную работу веб-приложения во всех популярных браузерах, чтобы больше людей могли получить к нему доступ и использовать его.
Эта цель может быть достигнута с помощью кроссбраузерной интеграции. Тестирование Продукт будет доступен во всех браузерах, входящих в область действия.
Причины проблем с совместимостью в разных браузерах
- Несоответствие размера шрифта в разных браузерах.
- JavaРеализации механизма выполнения скриптов различаются в разных версиях Chrome (V8). Firefox (SpiderMonkey), Safari (JavaScriptCore) и Edge.
- Различия в валидации CSS и HTML, включая обработку префиксов поставщиков.
- В старых версиях браузеров наблюдается непоследовательная или частичная поддержка функций HTML5 и ECMAScript.
- Варианты выравнивания страницы, размеров div-элементов и отображения с помощью flexbox или grid.
- Различия в ориентации изображения и цветовом профиле.
- Несовместимость браузера с базовой операционной системой, включая особенности работы мобильного 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 Файлы проекта для демонстрации в этом руководстве




