Как открыть браузеры IE и Edge в Selenium WebDriver с помощью PHP

Когда мы говорим о кроссбраузерном тестировании, большинство разработчиков (и тестеров автоматизации) полагают, что тестирования на новейших браузерах, таких как 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.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *