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

Защо се нуждаем от Cross Browser Test?
Уеб-базираните приложения са много различни от оригиналните настолни приложения. Уеб приложение може да бъде отворено във всеки браузър от крайния потребител. Например, някои хора предпочитат да отварят https://twitter.com in Firefox, докато други използват Chrome, сафари или Microsoft Edge.
На диаграмата по-долу можете да видите, че в по-старите браузъри, полето за вход в Twitter не изобразява заоблените ъгли правилно, докато съвременният Chrome изобразява ъглите по предназначение.
Така че трябва да гарантираме, че уеб приложението ще работи както се очаква във всички популярни браузъри, за да могат повече хора да имат достъп до него и да го използват.
Тази цел може да бъде постигната с Cross Browser Тестване на продукта във всеки браузър в обхвата.
Причини за проблеми с различни браузъри
- Несъответствие на размера на шрифта в различните браузъри.
- JavaИмплементациите на скриптовите двигатели се различават в Chrome (V8), Firefox (Паяк-маймуна), Сафари (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 ще изглежда така:
Този 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 Проектни файлове за демонстрацията в този урок




