Учебники

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

Что такое кросс-браузерное тестирование?

Кросс-браузерное тестирование — это тип функционального теста, который проверяет, работает ли ваше веб-приложение в разных браузерах.

Кросс-браузерное тестирование с использованием Selenium WebDriver

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

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

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

Кросс-браузерное тестирование с использованием Selenium WebDriver

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

Этот мотив может быть реализован с помощью кросс-браузерного тестирования продукта.

Причина Кросс-браузер Проблемы

  1. Несоответствие размера шрифта в разных браузерах.
  2. Реализация JavaScript может быть разной.
  3. CSS, HTML проверка различий может быть там.
  4. Некоторые браузеры до сих пор не поддерживают HTML5.
  5. Выравнивание страницы и размер div.
  6. Ориентация изображения.
  7. Несовместимость браузера с ОС. И т.п.

Как выполнить кросс-браузерное тестирование

Если мы используем Selenium WebDriver, мы можем автоматизировать тестовые случаи, используя браузеры Internet Explorer, FireFox, Chrome, Safari.

Для одновременного выполнения тестовых случаев с разными браузерами на одном компьютере мы можем интегрировать среду Testng с Selenium WebDriver.

Ваш testing.xml будет выглядеть так,

Кросс-браузерное тестирование с использованием Selenium WebDriver

Этот testing.xml будет сопоставлен с контрольным примером, который будет выглядеть так

Кросс-браузерное тестирование с использованием Selenium WebDriver

Здесь, поскольку в файле testing.xml есть два тега Test («ChromeTest», «FirefoxTest»), этот тестовый пример будет выполнен два раза для 2 разных браузеров.

Первый тест «ChromeTest» передаст значение параметра «browser» как «chrome», поэтому ChromeDriver будет выполнен. Этот тестовый пример будет работать в браузере Chrome.

Второй тест «FirefoxTest» передаст значение параметра «browser» как «Firefox», так что будет выполнен FirefoxDriver. Этот тестовый пример будет запущен в браузере FireFox.

Полный код:

Guru99CrossBrowserScript.java

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.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 Edge.exe
					System.setProperty("webdriver.edge.driver",".\\MicrosoftWebDriver.exe");
					//create Edge instance
					driver = new EdgeDriver();
				}
		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("http://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="2" 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»

Кросс-браузерное тестирование с использованием Selenium WebDriver

Резюме

  1. Кросс-браузерное тестирование — это метод тестирования веб-приложений с различными веб-браузерами.
  2. Selenium может поддерживать различные типы браузеров для автоматизации.
  3. Selenium может быть интегрирован с TestNG для проведения мультибраузерного тестирования.
  4. Из параметров в testing.xml мы можем передать имя браузера, а в тестовом примере мы можем создать ссылку на WebDriver соответственно.

Примечание . Данная программа была построена и протестирована на Selen 3.0.1, Chrome 56.0.2924.87, Firefox 47.0.2 и Microsoft Edge 14.14393. Если программы выдают ошибку, обновите драйвер

Загрузите файлы проекта Selenium для демонстрации в этом уроке