Когда мы говорим о кроссбраузерном тестировании, большинство разработчиков (и тестеров автоматизации) полагают, что тестирования на новейших браузерах, таких как Chrome, Firefox и Edge, должно быть достаточно для создания первоклассного продукта. Тем не менее, важно учитывать другие (т.е. не столь популярные) браузеры при построении мощной стратегии автоматизированного тестирования Selenium.
Было бы удивительно, если бы кто-то сказал: «Тестирование на Internet Explorer», но реальность такова, что «IE все еще занимает приличную долю рынка браузеров для настольных компьютеров». Учитывая, что 0,58% — это значительный процент населения планеты, можно с уверенностью сказать, что тестирование Internet Explorer все еще имеет смысл. Edge от Microsoft занимает близкое третье место, уступая Safari по доле рынка браузеров (для настольных компьютеров).
Хотя IE уже ушел на пенсию, он все еще остается «актуальным» игроком на рынке браузеров. Microsoft Edge является новым игроком на «поле боя браузеров» и должен быть в списке браузеров, на которых необходимо выполнять автоматизацию тестирования.
В данном учебнике по Selenium WebDriver PHP мы рассмотрим, как открыть браузер IE в Selenium WebDriver с помощью фреймворка автоматизации тестирования PHPUnit. Поскольку Edge также набирает обороты, мы также рассмотрим это в данном учебнике, используя PHPUnit в качестве фреймворка автоматизации тестирования Selenium.
Тем временем, если вы хотите протестировать свой сайт на браузерах IE и Edge через Selenium Grid онлайн, используйте LambdaTest для автоматизации тестирования.?.
Как открыть браузер IE в Selenium WebDriver с помощью PHP
Чтобы запустить браузер Internet Explorer в Selenium PHP, нам нужно сначала загрузить Selenium WebDriver для Internet Explorer (IE). Он также называется IEDriverServer.
Как установить Selenium WebDriver для Internet Explorer (IE)
В зависимости от архитектуры машины (т.е. 32-битной или 64-битной) загрузите соответствующий файл IEDriverServer.exe из следующих мест:
Архитектура машины (IEDriverServer) | Место загрузки |
---|---|
32-разрядная Windows (или 32-разрядный IE) | https://goo.gl/9Cqa4q |
64-разрядная Windows (или 64-разрядный IE) | https://goo.gl/AtHQuv |
В случае возникновения проблем во время выполнения, замените 64-битный WebDriver для IE на 32-битный WebDriver. Добавьте местоположение, где присутствует IEDriverServer.exe, в переменную окружения PATH.
Мы будем использовать локальный Selenium Grid для тестирования в Internet Explorer, и мы рекомендуем держать IEDriverServer.exe в месте, где присутствует Selenium Grid Server.
Примечание: метод localeCompare выдает число, указывающее, идет ли строка ссылки до, после или очень похожа на заданную строку в порядке сортировки.
Настройка Internet Explorer для тестирования с помощью Selenium PHP
Перед выполнением автоматизации тестирования Selenium необходимо правильно настроить «Защищенный режим» в Internet Explorer. Неправильная настройка «Защищенного режима» в Internet Explorer может привести к исключению NoSuchWindowException.
Отключите «Защищенный режим» для всех зон (т.е. Интернет, локальная интрасеть, доверенные сайты и ограниченные сайты). Перезапустите Internet Explorer, чтобы изменения вступили в силу.
Помимо настройки параметров защищенного режима, мы рекомендуем установить уровень масштабирования браузера на 100 процентов, чтобы правильно обрабатывать события мыши. Если вы хотите усовершенствовать свои навыки работы с Selenium PHP, обязательно ознакомьтесь с нашим подробным руководством по Selenium WebDriver PHP.
Поскольку Internet Explorer является «устаревшим» браузером, вы можете наблюдать задержки при обработке динамических веб-элементов, загруженных с помощью AJAX (асинхронного JavaScript и XML). Чтобы обеспечить бесперебойную работу с Selenium, создайте запись с именем iexplore.exe в реестре Windows.
Если подключ FEATURE_BFCACHE отсутствует, создайте этот подключ, а затем создайте новую запись с именем iexplore.exe типа DWORD (или Double Word). Присвойте созданной записи значение ‘0’.
Таким образом, мы готовы к реальным действиям по запуску браузера IE с помощью Selenium WebDriver с использованием PHP.
Создание сеанса браузера Internet Explorer
Прежде чем мы рассмотрим, как открыть браузер IE с помощью Selenium WebDriver, необходимо создать сессию браузера в Selenium PHP. Во время создания сессии необходимо передать URL запущенного Selenium Server.
// selenium-server-standalone-#.jar (version 3.x)
$host = 'http://localhost:4444/wd/hub';
// selenium-server-standalone-#.jar (version 4.x)
$host = 'http://localhost:4444';
Упомянутый выше URL хоста изменится, если тесты будут проводиться в виртуальном браузере (т.е. в браузере на облачной Selenium Grid, такой как LambdaTest).
Для запуска (или начала работы) Internet Explorer на локальной Selenium Grid выполните следующие шаги:
use PHPUnitFrameworkTestCase;
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;
protected $webDriver;
$capabilities = DesiredCapabilities:: InternetExplorer();
$this->webDriver = RemoteWebDriver::create($host, $capabilities);
Если вы являетесь специалистом по PHP, вы можете получить эталонный отраслевой сертификат, специализирующийся на основных навыках программирования на PHP, и расширить свои возможности для продвижения по карьерной лестнице в области автоматизации Selenium PHP.
Как запустить браузер Internet Explorer в Selenium PHP
Чтобы выполнить автоматизированное тестирование Selenium с помощью Internet Explorer на локальной Selenium Grid, мы сначала загрузим Selenium Grid 3 (т.е. 3.141.59) для выполнения тестов.
Если вы заинтересованы в автоматизации тестирования с помощью Selenium 4, обязательно ознакомьтесь с различиями между Selenium 3 и Selenium 4. Однако я бы зарезервировал еще один блог, в котором я расскажу о своем опыте работы с Selenium 4 RC. Мы используем стабильный Selenium 3 для демонстраций, перечисленных в этом блоге.
Запустите Selenium Grid, вызвав следующую команду в терминале (или командной строке):
java -jar selenium-server-standalone-3.141.59.jar
Selenium Grid будет прослушивать входящие запросы на порту номер 4444. Вы можете использовать другой номер порта, если порт 4444 используется каким-либо другим приложением на вашей машине.
Для демонстрации «Как открыть браузер IE в Selenium WebDriver с помощью PHP» мы используем следующий тестовый сценарий:
Сценарий теста
- Перейдите на URL https://lambdatest.github.io/sample-todo-app/ в Internet Explorer
- Выберите первые два флажка
- Отправьте ‘Yey, Lets add it to list’ в текстовое поле с id = sampletodotext
- Нажмите кнопку Добавить и проверьте, был ли текст добавлен или нет.
- Утверждение, если заголовок не совпадает с ожидаемым заголовком окна
Реализация
Первым шагом является создание composer.json в корневой папке. Далее предполагается загрузить соответствующие зависимости, необходимые для проекта.
{
"require":{
"php":">=7.1",
"phpunit/phpunit":"^9",
"phpunit/phpunit-selenium": "*",
"php-webdriver/webdriver":"1.8.0",
"symfony/symfony":"4.4",
}
}
Имя файла — composer.json
Для установки зависимостей откройте терминал и выполните следующую команду:
composer require
Нажмите кнопку ‘Enter’ два раза, чтобы продолжить установку пакетов
<?php
require 'vendor/autoload.php';
use PHPUnitFrameworkTestCase;
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;
class IETest extends TestCase
{
protected $webDriver;
public function build_browser_capabilities()
{
$capabilities = DesiredCapabilities:: InternetExplorer();
return $capabilities;
}
public function setUp(): void
{
$capabilities = $this->build_browser_capabilities();
$this->webDriver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $capabilities);
}
public function tearDown(): void
{
$this->webDriver->quit();
}
/*
* @test
*/
public function test_LT_ToDoApp()
{
$itemName = 'Yey, Lets add it to list';
$this->webDriver->get("https://lambdatest.github.io/sample-todo-app/");
$this->webDriver->manage()->window()->maximize();
$this->assertEquals('Sample page - lambdatest.com', $this->webDriver->getTitle());
sleep(5);
$element1 = $this->webDriver->findElement(WebDriverBy::name("li1"));
$element1->click();
$element2 = $this->webDriver->findElement(WebDriverBy::name("li2"));
$element2->click();
$element3 = $this->webDriver->findElement(WebDriverBy::id("sampletodotext"));
$element3->sendKeys($itemName);
$element4 = $this->webDriver->findElement(WebDriverBy::id("addbutton"));
$element4->click();
$driver = $this->webDriver;
$this->webDriver->wait(10, 500)->until(function($driver) {
$elements = $this->webDriver->findElements(WebDriverBy::cssSelector("[class='list-unstyled'] li:nth-child(6) span"));
echo "New entry count " . count($elements);
$this->assertEquals(1, count($elements));
return count($elements) > 0;
});
sleep(5);
}
}
?>
Имя файла — testsIETest.php
<?php
require 'vendor/autoload.php';
use PHPUnitFrameworkTestCase;
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;
class IETest extends TestCase
{
protected $webDriver;
public function build_browser_capabilities()
{
$capabilities = DesiredCapabilities:: InternetExplorer();
return $capabilities;
}
public function setUp(): void
{
$capabilities = $this->build_browser_capabilities();
$this->webDriver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $capabilities);
}
public function tearDown(): void
{
$this->webDriver->quit();
}
/*
* @test
*/
public function test_LT_ToDoApp()
{
$itemName = 'Yey, Lets add it to list';
$this->webDriver->get("https://lambdatest.github.io/sample-todo-app/");
$this->webDriver->manage()->window()->maximize();
$this->assertEquals('Sample page - lambdatest.com', $this->webDriver->getTitle());
sleep(5);
$element1 = $this->webDriver->findElement(WebDriverBy::name("li1"));
$element1->click();
$element2 = $this->webDriver->findElement(WebDriverBy::name("li2"));
$element2->click();
$element3 = $this->webDriver->findElement(WebDriverBy::id("sampletodotext"));
$element3->sendKeys($itemName);
$element4 = $this->webDriver->findElement(WebDriverBy::id("addbutton"));
$element4->click();
$driver = $this->webDriver;
$this->webDriver->wait(10, 500)->until(function($driver) {
$elements = $this->webDriver->findElements(WebDriverBy::cssSelector("[class='list-unstyled'] li:nth-child(6) span"));
echo "New entry count " . count($elements);
$this->assertEquals(1, count($elements));
return count($elements) > 0;
});
sleep(5);
}
}
?>
Просмотр кода
- Для начала работы импортируйте необходимые классы, методы которых будут использоваться в коде.
use PHPUnitFrameworkTestCase;
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;
- В методе build_browser_capabilities установите желаемые возможности браузера (т.е. Internet Explorer). Поскольку мы собираемся использовать IE в его состоянии по умолчанию, никаких дополнительных возможностей не задается.
public function build_browser_capabilities()
{
$capabilities = DesiredCapabilities:: InternetExplorer();
return $capabilities;
}
-
Метод setup содержит реализацию, связанную с инициализацией WebDriver. Метод create класса RemoteWebDriver используется для создания экземпляра браузера Internet Explorer. Он принимает два параметра:
-
http://localhost:4444/wd/hub — Адрес и номер порта сервера Selenium Server.
-
$capabilities — Возможности браузера, на котором выполняется тестирование, т.е. Internet Explorer.
public function setUp(): void
{
$capabilities = $this->build_browser_capabilities();
$this->webDriver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $capabilities);
}
- В методе test_LT_ToDoApp, содержащем реализацию тестового случая, установите URL браузера на https://lambdatest.github.io/sample-todo-app/.
$this->webDriver->get("https://lambdatest.github.io/sample-todo-app/");
$this->webDriver->manage()->window()->maximize();
- Получите информацию о необходимых веб-элементах на странице с помощью инструмента Inspect Tool (в Chrome). Мы не рекомендуем использовать Internet Explorer для проверки веб-элементов.
Метод findElement в WebDriver используется с параметром в виде класса WebDriverBy, который находит веб-элемент ‘li1’ и ‘li2’ с помощью свойства Name. Вы также можете выбрать другие веб-локаторы Selenium, такие как XPath, CSS, Link Text и т.д., для поиска соответствующего веб-элемента на странице.
Операция щелчка в Selenium выполняется на найденном веб-элементе для выбора конкретного элемента флажка.
$element1 = $this->webDriver->findElement(WebDriverBy::name("li1"));
$element1->click();
$element2 = $this->webDriver->findElement(WebDriverBy::name("li2"));
$element2->click();
- Строка ‘Yey, Lets add it to list’ отправляется в элемент текстового поля с ID ‘sampletodotext’ с помощью метода sendKeys в Selenium.
$element3 = $this->webDriver->findElement(WebDriverBy::id("sampletodotext"));
$element3->sendKeys($itemName);
- Установлено явное ожидание в 10 секунд, прежде чем фреймворк Selenium выбросит исключение ElementNotVisibleException. Каждые 500 мс выполняется проверка на наличие элемента, который был добавлен в шаге (5). Ознакомьтесь с тем, как использовать неявное ожидание и явное ожидание в Selenium PHP.
Предположим, что элемент найден (в течение заданного времени в 10 секунд). В этом случае цикл будет завершен, а количество элементов [т.е. count($elements)] будет больше нуля [т.е. будет равно единице, поскольку в список был добавлен только один элемент].
Утверждение, если количество элементов равно нулю. В нашем случае количество элементов равно 1, так как в список дел был добавлен один новый элемент.
$driver = $this->webDriver;
$this->webDriver->wait(10, 500)->until(function($driver) {
$elements = $this->webDriver->findElements(WebDriverBy::cssSelector("[class='list-unstyled'] li:nth-child(6) span"));
echo "New entry count " . count($elements);
return count($elements) > 0;
});
Выполнение
Для выполнения тестового кода выполните в терминале следующую команду (из корневой папки проекта):
vendorbinphpunit --debug testsIETest.php
Ниже показан снимок выполнения, который показывает, что новый элемент был добавлен в список, и необходимые действия были выполнены над нужными веб-элементами:
Если вы используете Selenium PHP с инструментами CI/CD для реализации непрерывного тестирования, обязательно ознакомьтесь с нашим подробным блогом, в котором подробно рассматривается настройка CI/CD Pipeline с Bamboo для PHP проектов.
В этом руководстве по Selenium WebDriver PHP мы рассмотрели, как открыть браузер IE в Selenium WebDriver с помощью PHP, теперь мы научимся открывать браузер Edge в Selenium WebDriver.
Как открыть браузер Microsoft Edge в Selenium WebDriver с помощью PHP
Чтобы запустить браузер Edge в Selenium PHP, нам сначала нужно загрузить Selenium WebDriver для Edge. Он также называется MicrosoftWebDriver.
Примечание: Object.observe описывает метод связывания данных, который является функциональностью ECMAScript 7. Представлен суперсет объектной нотации JSON (JSON-Object). Также описывается формат обмена данными JavaScript (JSON-Form).
Как установить Selenium WebDriver для Microsoft Edge
В зависимости от версии браузера Edge, установленного на машине, загрузите соответствующий MicrosoftWebDriver .exe. Для проверки версии Selenium Edge введите в адресной строке edge://settings/help.
Перейдите в раздел «О Microsoft Edge» и запишите версию браузера Edge. В нашем случае версия Edge, установленная на машине, — 85.0.564.63 (64-бит).
Перейдите на сайт Microsoft Edge Developer и найдите драйвер Edge Driver, соответствующий установленному на машине Edge.
Загрузите соответствующий MicrosoftWebDriver.exe и поместите его в то место, где присутствует Selenium Server jar. Кроме того, добавьте это место в переменную окружения PATH.
Таким образом, мы готовы открыть браузер Microsoft Edge в Selenium WebDriver с помощью PHP.
Создание сеанса браузера Edge
Для создания сессии браузера Microsoft Edge в Selenium PHP, во время создания сессии необходимо передать URL запущенного Selenium Server.
// selenium-server-standalone-#.jar (version 3.x)
$host = 'http://localhost:4444/wd/hub';
// selenium-server-standalone-#.jar (version 4.x)
$host = 'http://localhost:4444';
Для запуска (или старта) Microsoft Edge на локальной Selenium Grid выполняются следующие шаги:
use PHPUnitFrameworkTestCase;
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;
protected $webDriver;
$capabilities = DesiredCapabilities:: microsoftEdge();
$this->webDriver = RemoteWebDriver::create($host, $capabilities);
Как запустить браузер Microsoft Edge в Selenium PHP
Чтобы продемонстрировать автоматическое тестирование Selenium на браузере Microsoft Edge с помощью PHPUnit, мы возьмем тот же сценарий тестирования, который использовался для демонстрации использования Internet Explorer в этом учебнике по Selenium WebDriver PHP.
- Перейдите на URL https://lambdatest.github.io/sample-todo-app/ в Microsoft Edge.
- Выберите первые два флажка
- Отправьте ‘Yey, Lets add it to list’ в текстовое поле с id = sampletodotext
- Нажмите кнопку Добавить и проверьте, был ли текст добавлен или нет.
- Утверждение, если заголовок не совпадает с ожидаемым заголовком окна
Хотя мы используем фреймворк PHPUnit, существует ряд популярных PHP-фреймворков для веб-разработки и веб-автоматизации Selenium, которые вы можете выбрать. Для загрузки зависимых пакетов используется тот же composer.json. Поскольку файл теста будет расположен в той же директории (т.е. testsEdgeTest.php), вызов команды composer require в терминале не требуется.
Реализация
Единственное отличие в реализации заключается в том, что тест выполняется в браузере Microsoft Edge вместо Internet Explorer.
<?php
require 'vendor/autoload.php';
use PHPUnitFrameworkTestCase;
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;
class EdgeTest extends TestCase
{
protected $webDriver;
public function build_browser_capabilities()
{
$capabilities = DesiredCapabilities:: microsoftEdge();
return $capabilities;
}
public function setUp(): void
{
$capabilities = $this->build_browser_capabilities();
$this->webDriver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $capabilities);
}
public function tearDown(): void
{
$this->webDriver->quit();
}
/*
* @test
*/
public function test_LT_ToDoApp()
{
$itemName = 'Yey, Lets add it to list';
$this->webDriver->get("https://lambdatest.github.io/sample-todo-app/");
$this->webDriver->manage()->window()->maximize();
$this->assertEquals('Sample page - lambdatest.com', $this->webDriver->getTitle());
sleep(5);
$element1 = $this->webDriver->findElement(WebDriverBy::name("li1"));
$element1->click();
$element2 = $this->webDriver->findElement(WebDriverBy::name("li2"));
$element2->click();
$element3 = $this->webDriver->findElement(WebDriverBy::id("sampletodotext"));
$element3->sendKeys($itemName);
$element4 = $this->webDriver->findElement(WebDriverBy::id("addbutton"));
$element4->click();
$driver = $this->webDriver;
$this->webDriver->wait(10, 500)->until(function($driver) {
$elements = $this->webDriver->findElements(WebDriverBy::cssSelector("[class='list-unstyled'] li:nth-child(6) span"));
echo "New entry count " . count($elements);
$this->assertEquals(1, count($elements));
return count($elements) > 0;
});
sleep(5);
}
}
?>
Имя файла — testsEdgeTest.php
Разбор кода
Реализация изменена в методе, где устанавливаются возможности браузера.
public function build_browser_capabilities()
{
/* $capabilities = DesiredCapabilities:: InternetExplorer(); */
$capabilities = DesiredCapabilities:: microsoftEdge();
return $capabilities;
}
Остальная часть реализации остается неизменной. Для более детального рассмотрения кода, пожалуйста, обратитесь к предыдущему разделу, где мы рассмотрели тот же самый код (единственное отличие заключается в том, что в этом тестовом сценарии используется Edge, а не Internet Explorer).
Выполнение
Для выполнения теста выполните следующую команду в терминале:
vendorbinphpunit --debug testsEdgeTest.php
Как видно на снимке Selenium Grid, экземпляр браузера Edge был инстанцирован, и тесты были проведены на нем без каких-либо проблем.
Вот снимок выполнения:
Для вызова тестов для одновременного запуска Internet Explorer и Microsoft Edge мы создали файл конфигурации PHPUnit (т.е. phpunit.xml.dist) в корневой папке.
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="vendor/autoload.php" backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="false" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
<testsuites>
<testsuite name="IE-Edge-Test">
<directory>tests</directory>
</testsuite>
</testsuites>
<php>
<env name="APP_ENV" value="testing"/>
</php>
</phpunit>
Имя файла — phpunit.xml.dist
Как видно из конфигурационного файла PHPUnit, папка tests добавлена в директиву < directory >. Таким образом, когда команда phpunit вызывается из корневой папки, выполняются тестовые случаи, расположенные в файлах (т.е. IETest.php и EdgeTest.php), имеющихся в папке ‘tests’.
Для выполнения тестов выполните следующую команду в терминале:
vendorbinphpunit
Как видно на снимке выполнения, выполняются два теста и возникают четыре утверждения:
Пример, который мы использовали в демонстрации, — это простое приложение ToDo. Однако существует вероятность того, что ваш тестовый сценарий будет включать в себя несколько вкладок и окон, и в этом случае вам следует ознакомиться с нашим подробным блогом, посвященным обработке нескольких окон и вкладок браузера в Selenium PHP.
Примечание — Методы padStart() & padEnd() заполняют строку некоторыми символами, пока результирующая строка не достигнет заданной длины. Это может быть полезно для отображения текста в удобочитаемом виде, и особенно для выравнивания строк, которые не имеют одинаковой длины, как того требует пользовательский интерфейс, или для других подобных нужд.
Как открыть IE и Edge на облачной Selenium Grid
Что делать, если вам нужно провести тестирование с IE (или Microsoft Edge) на устаревшей операционной системе (например, Windows 8.1) с помощью Selenium PHP? Локальная Selenium Grid в таких сценариях будет работать неэффективно, поскольку вы не сможете воспользоваться всеми преимуществами параллельного тестирования в Selenium.
Перенос тестов в облачную Selenium Grid, такую как LambdaTest, позволит легко выполнять тесты с Internet Explorer и Microsoft Edge даже на устаревших ОС, таких как Windows 8.1. Вы можете выполнять автоматизацию тестирования в больших масштабах, перенося тесты из локальных браузеров в онлайн-браузеры.
Хотя тесты на запуск браузеров Internet Explorer и Edge были выполнены успешно, основными недостатками выполнения кроссбраузерного тестирования с различными браузерами на локальной сетке Selenium являются:
- Сервер Selenium должен быть вызван отдельно, и существует ограничение на количество экземпляров браузеров, которые могут быть вызваны во время тестирования.
- Для настройки параллельного тестирования на локальной Selenium Grid требуются значительные усилия.
- Производительность локальной Selenium Grid может ухудшиться, если тестировщикам автоматизации требуется большое количество серверов узлов.
Именно здесь облачная Selenium Grid, такая как LambdaTest, может помочь повысить производительность за счет параллельного тестирования, когда речь идет о запуске браузеров Internet Explorer и Edge в Selenium WebDriver с помощью PHP. Кроме того, вы можете ознакомиться с многочисленными преимуществами облачного тестирования, большинство из которых не могут быть достигнуты на локальном Grid.
Давайте рассмотрим, как можно провести кроссбраузерное тестирование с помощью браузеров Internet Explorer и Microsoft Edge на Windows 8.1:
Чтобы начать, создайте учетную запись на LambdaTest и запишите имя пользователя и ключ доступа, которые доступны в разделе профиля на LambdaTest. Затем, возможности браузера могут быть сгенерированы с помощью генератора возможностей LambdaTest.
Мы портируем существующую реализацию для IE и Edge, чтобы она работала на Selenium Grid в LambdaTest.
Возможности браузера для Internet Explorer на Windows 8.1
$capabilities = array(
"build" => "[PHP] Testing of Internet Explorer on Windows 8.1",
"name" => "[PHP] Testing of Internet Explorer on Windows 8.1",
"platform" => "Windows 8.1",
"browserName" => "Internet Explorer",
"version" => "11.0",
"ie.compatibility" => 11001
)
Теперь, когда мы сгенерировали возможности браузера, мы переносим существующую реализацию «запуска Internet Explorer в Selenium PHP» для работы на онлайн Selenium Grid.
<?php
require 'vendor/autoload.php';
use PHPUnitFrameworkTestCase;
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;
$GLOBALS['LT_USERNAME'] = "user-name";
$GLOBALS['LT_APPKEY'] = "access-key";
class IETest extends TestCase
{
protected $webDriver;
public function build_browser_capabilities()
{
/* $capabilities = DesiredCapabilities:: InternetExplorer(); */
$capabilities = array(
"build" => "[PHP] Testing of Internet Explorer on Windows 8.1",
"name" => "[PHP] Testing of Internet Explorer on Windows 8.1",
"platform" => "Windows 8.1",
"browserName" => "Internet Explorer",
"version" => "11.0",
"ie.compatibility" => 11001
);
return $capabilities;
}
public function setUp(): void
{
$capabilities = $this->build_browser_capabilities();
$url = "https://". $GLOBALS['LT_USERNAME'] .":" . $GLOBALS['LT_APPKEY'] ."@hub.lambdatest.com/wd/hub";
$this->webDriver = RemoteWebDriver::create($url, $capabilities);
}
public function tearDown(): void
{
$this->webDriver->quit();
}
/*
* @test
*/
public function test_LT_ToDoApp()
{
$itemName = 'Yey, Lets add it to list';
$this->webDriver->get("https://lambdatest.github.io/sample-todo-app/");
$this->webDriver->manage()->window()->maximize();
$this->assertEquals('Sample page - lambdatest.com', $this->webDriver->getTitle());
sleep(5);
$element1 = $this->webDriver->findElement(WebDriverBy::name("li1"));
$element1->click();
$element2 = $this->webDriver->findElement(WebDriverBy::name("li2"));
$element2->click();
$element3 = $this->webDriver->findElement(WebDriverBy::id("sampletodotext"));
$element3->sendKeys($itemName);
$element4 = $this->webDriver->findElement(WebDriverBy::id("addbutton"));
$element4->click();
$driver = $this->webDriver;
$this->webDriver->wait(10, 500)->until(function($driver) {
$elements = $this->webDriver->findElements(WebDriverBy::cssSelector("[class='list-unstyled'] li:nth-child(6) span"));
echo "New entry count " . count($elements);
$this->assertEquals(1, count($elements));
return count($elements) > 0;
});
sleep(5);
}
}
?>
Просмотр кода
Поскольку изменения касаются только инфраструктуры (т.е. переноса на облачный Selenium Grid), основная логика реализации теста остается неизменной.
Строки (9 — 11) — В начале реализации объявлены глобальные переменные, содержащие значения имени пользователя и ключа доступа, полученные со страницы профиля ‘LambdaTest’.
$GLOBALS['LT_USERNAME'] = "user-name";
$GLOBALS['LT_APPKEY'] = "access-key";
Строки (20 — 27) — массив желаемых возможностей генерируется с помощью LambdaTest Capabilities Generator. Эти возможности используются в методе setUp.
$capabilities = array(
"build" => "[PHP] Testing of Internet Explorer on Windows 8.1",
"name" => "[PHP] Testing of Internet Explorer on Windows 8.1",
"platform" => "Windows 8.1",
"browserName" => "Internet Explorer",
"version" => "11.0",
"ie.compatibility" => 11001
);
Строки (34 — 35) — Имя пользователя и комбинация access-key используется для доступа к URL LambdaTest Selenium Grid, т.е. [@hub.lambdatest.com/wd/hub].
Метод create метода RemoteWebDriver принимает URL Selenium Grid в качестве первого параметра и возможности браузера в качестве второго параметра.
$url = "https://". $GLOBALS['LT_USERNAME'] .":" . $GLOBALS['LT_APPKEY'] ."@hub.lambdatest.com/wd/hub";
$this->webDriver = RemoteWebDriver::create($url, $capabilities);
Основная часть реализации осталась неизменной, так как только точка выполнения переместилась с локальной Selenium Grid на облачную Selenium Grid (т.е. LambdaTest).
Выполнение
Вот снимок выполнения Internet Explorer на Windows 8.1. Он получен из LambdaTest Automation Dashboard:
Мы перенесли существующую реализацию, которая использовалась для запуска Microsoft Edge из локальной Selenium Grid в облачную Selenium Grid на LambdaTest. Ниже показаны возможности браузера для Microsoft Edge на Windows 8.1
$capabilities = array(
"build" => "[PHP] Testing of Edge on Windows 8.1",
"name" => "[PHP] Testing of Edge on Windows 8.1",
"platform" => "Windows 8.1",
"browserName" => "MicrosoftEdge",
"version" => "81.0"
)
Ниже приведены изменения в реализации для запуска браузера Edge на Windows 8.1 с помощью Selenium PHP:
Выполнение
Вот снимок выполнения, полученный из вкладки Automation в LambdaTest:
Завершение
Источник
Несмотря на то, что Internet Explorer является устаревшим браузером, вам все еще может понадобиться выполнить Selenium автоматическое тестирование на IE, особенно если на вашем целевом рынке есть значительный процент пользователей, использующих IE. Microsoft Edge, который играет в догонялки в войне браузеров, претерпел значительные изменения с тех пор, как для его разработки был использован проект с открытым исходным кодом Chromium.
В этом учебнике по Selenium WebDriver PHP мы подробно рассмотрели, как открыть браузер IE в Selenium WebDriver. Мы также рассмотрели вызов браузера Edge в Selenium WebDriver с помощью PHP.
Преимущества параллельного выполнения тестов и тестирования на различных комбинациях браузеров и ОС можно использовать, только если вы откроете браузеры Internet Explorer и Edge в Selenium WebDriver на облачной Selenium Grid, такой как LambdaTest. Это может помочь в ускорении различных действий, связанных с автоматизацией тестирования Selenium.