Использование WebDriver для автоматизации Microsoft Edge

WebDriver позволяет автоматизировать Microsoft Edge, моделируя взаимодействие с пользователем. Тесты, использующие WebDriver, имеют некоторые преимущества по сравнению с модульными тестами JavaScript, выполняемыми в браузере:

  • WebDriver обращается к функциям и сведениям, недоступным для JavaScript, работающего в браузерах.

  • WebDriver имитирует события пользователя или события уровня ОС более точно, чем модульные тесты JavaScript.

  • WebDriver управляет несколькими окнами, вкладками и веб-страницами в одном тестовом сеансе.

  • WebDriver запускает несколько сеансов Microsoft Edge на определенном компьютере.

В этой статье приведены необработанные примеры кода, а не завершенные тесты. В этой статье не приводятся полные инструкции по началу работы с Selenium WebDriver, но рассматриваются только части процесса, относящиеся к Microsoft Edge. Сюда входит получение Microsoft Edge WebDriver и настройка параметров Microsoft Edge в коде.

Связь между WebDriver и другим программным обеспечением

Чтобы автоматизировать Microsoft Edge с помощью WebDriver для имитации взаимодействия с пользователем, вам потребуется три компонента:

  • Microsoft Edge.
  • Microsoft Edge WebDriver.
  • Платформа тестирования WebDriver.

Функциональная связь между этими компонентами выглядит следующим образом:

Технология Роль
WebDriver Стандарт W3C для протокола провода, не зависящий от платформы и языка. Этот протокол позволяет внепроцессным программам удаленно инструктировать поведение веб-браузеров.
Microsoft Edge WebDriver Реализация протокола WebDriver корпорацией Майкрософт специально для Microsoft Edge. Авторы тестов пишут тесты, использующие команды WebDriver, получаемые Microsoft Edge WebDriver. Microsoft Edge WebDriver затем отвечает за передачу этой команды в браузер.
Платформа тестирования WebDriver Авторы тестов используют платформу тестирования для написания комплексных тестов и автоматизации браузеров. Предоставляет интерфейс для конкретного языка, который преобразует код в команды, отправляемые в Microsoft Edge WebDriver. Платформы тестирования WebDriver существуют для всех основных платформ и языков. Одной из таких платформ является Selenium WebDriver.
Драйвер Обозреватель Интернета Реализация протокола WebDriver с открытым кодом специально для интернет-Обозреватель. Для выполнения комплексных тестов прежних версий для режима Обозреватель Интернета рекомендуется использовать Драйвер Обозреватель Интернета.
Microsoft WebDriver (устаревшая версия) Предыдущий, зависящий от браузера драйвер для Microsoft Edge (EdgeHTML), который также известен как устаревшая версия Microsoft Edge.

В следующих разделах описано, как приступить к работе с WebDriver для Microsoft Edge.

Скачать Microsoft Edge WebDriver

Чтобы начать написание автоматических тестов, убедитесь, что устанавливаемая версия Microsoft Edge WebDriver соответствует версии браузера, как показано ниже.

  1. Перейдите по адресу edge://settings/help и запишите свою версию Microsoft Edge:

    Номер сборки для Microsoft Edge 15 апреля 2021 г.

  2. Перейдите в Microsoft Edge WebDriver.

  3. В разделе Получение последней версии страницы выберите в канале платформу, соответствующую номеру версии Microsoft Edge:

    Раздел Получение последней версии веб-страницы Microsoft Edge WebDriver

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

Необходимо установить драйвер браузера (Microsoft Edge WebDriver) и платформу тестирования WebDriver (например, Selenium WebDriver), как описано в разделе Выбор платформы тестирования WebDriver ниже. Это отдельные компоненты.

Выбор платформы тестирования WebDriver

После скачивания Microsoft Edge WebDriver последним компонентом, который необходимо скачать, является платформа тестирования WebDriver. Авторы тестов используют платформы тестирования WebDriver для написания комплексных тестов и автоматизации браузеров. Платформа тестирования WebDriver предоставляет интерфейс для конкретного языка, который преобразует код в команды, запускаемые Microsoft Edge WebDriver в Microsoft Edge. Платформы тестирования WebDriver существуют для всех основных платформ и языков, таких как Python, Java, C#, Ruby и JavaScript.

Microsoft Edge WebDriver можно использовать с любой платформой WebDriver. В этой статье содержатся инструкции по использованию платформы Selenium WebDriver, но вы можете использовать любую библиотеку, платформу и язык программирования, поддерживающий WebDriver.

Selenium WebDriver — одна из популярных реализаций платформы WebDriver. Selenium — это межбраузерная библиотека автоматизации, которая не зависит от языка и платформы тестирования. В этой статье selenium WebDriver используется только в качестве иллюстрированного примера, так как он соответствует потребностям большинства пользователей. Если вы используете Selenium для автоматизации Microsoft Edge, необходимо использовать Selenium 4; Selenium 3 больше не поддерживается.

Чтобы выполнить те же задачи с помощью платформы тестирования WebDriver, отличной от Selenium WebDriver, обратитесь к официальной документации по выбранной платформе.

Использование Selenium WebDriver

Одной из возможных платформ WebDriver, которую можно использовать, является Selenium WebDriver, которая входит в набор инструментов Selenium. Selenium WebDriver — это платформа тестирования с открытым кодом, которая может использоваться на любой платформе и предоставляет языковые привязки для Java, Python 3, C#, Ruby и JavaScript.

Если вы используете Selenium для автоматизации Microsoft Edge, необходимо использовать Selenium 4; Selenium 3 больше не поддерживается.

Подробные инструкции по установке Selenium для предпочитаемого языка и среды разработки см. в документации Selenium по установке библиотеки Selenium.

Автоматизация Microsoft Edge с помощью WebDriver

Чтобы автоматизировать браузер с помощью WebDriver, необходимо сначала запустить сеанс WebDriver с помощью платформы тестирования WebDriver. Сеанс WebDriver — это один запущенный экземпляр браузера, управляемый с помощью команд WebDriver.

Запустите сеанс WebDriver, чтобы запустить новый экземпляр браузера. Запущенный экземпляр браузера остается открытым до закрытия сеанса WebDriver.

В следующем разделе описывается использование Selenium 4 для запуска сеанса WebDriver в Microsoft Edge.

Примечание.

В этой статье содержатся инструкции по использованию платформы Selenium WebDriver, но вы можете использовать любую библиотеку, платформу и язык программирования, поддерживающий WebDriver. Чтобы выполнить те же задачи с помощью другой платформы, обратитесь к документации по выбранной платформе.

Автоматизация Microsoft Edge

Selenium использует класс для EdgeDriver управления сеансом Microsoft Edge. Следующий код:

  1. Запускает сеанс Microsoft Edge.
  2. Указывает Microsoft Edge перейти в Bing.
  3. Выполняет поиск по запросу "WebDriver".
  4. Выполняется в спящем режиме в течение нескольких секунд, чтобы увидеть результаты.

Чтобы приступить к автоматизации Microsoft Edge с помощью WebDriver, скопируйте и вставьте фрагмент кода для предпочитаемого языка:

using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
using System.Threading;

namespace EdgeDriverSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var driver = new EdgeDriver();
            try
            {
                driver.Url = "https://bing.com";

                var element = driver.FindElement(By.Id("sb_form_q"));
                element.SendKeys("WebDriver");
                element.Submit();

                Thread.Sleep(5000);
            }
            finally
            {
                driver.Quit();
            }
        }
    }
}

Управление службой Microsoft Edge WebDriver и ее настройка

При создании нового EdgeDriver объекта для запуска сеанса Microsoft Edge Selenium запускает новый процесс Microsoft Edge WebDriver, с которым EdgeDriver объект взаимодействует. Процесс Microsoft Edge WebDriver закрывается при вызове EdgeDriver метода объекта Quit . Предоставление каждому EdgeDriver объекту управления собственным процессом драйвера может оказаться неэффективным, если у вас много тестов, так как каждый тест должен ждать запуска нового процесса драйвера. Вместо этого можно создать один процесс Microsoft Edge WebDriver, а затем повторно использовать его для нескольких тестов.

Selenium использует класс для EdgeDriverService управления процессом Microsoft Edge WebDriver. Вы можете создать объект EdgeDriverService один раз перед выполнением тестов, а затем передать этот EdgeDriverService объект конструктору EdgeDriver при создании нового EdgeDriver объекта. При передаче EdgeDriverServiceEdgeDriver в конструктор EdgeDriver объект будет использовать этот EdgeDriverServiceобъект вместо создания нового.

Вы также можете использовать для EdgeDriverService настройки параметров командной строки для процесса Microsoft Edge WebDriver, как показано ниже.

Следующий фрагмент кода создает новый EdgeDriverService и включает подробные выходные данные журнала:

var service = EdgeDriverService.CreateDefaultService();
service.UseVerboseLogging = true;

var driver = new EdgeDriver(service);

Настройка параметров Microsoft Edge

Вы можете передать EdgeOptions объект конструктору EdgeDriver , чтобы настроить дополнительные параметры для процесса браузера Microsoft Edge. В следующем разделе показано, как использовать EdgeOptions для некоторых распространенных сценариев. Полный список поддерживаемых параметров см. в разделе Возможности и Возможности EdgeOptions.

Выбор определенных двоичных файлов браузера

Вы можете запустить сеанс WebDriver с определенными двоичными файлами Microsoft Edge. Например, тесты можно выполнять с помощью каналов предварительной версии Microsoft Edge, таких как Microsoft Edge Beta, Dev или Canary.

var options = new EdgeOptions();
options.BinaryLocation = @"C:\Program Files (x86)\Microsoft\Edge Beta\Application\msedge.exe";

var driver = new EdgeDriver(options);
Передача дополнительных аргументов командной строки

С помощью EdgeOptions можно настроить аргументы командной строки, которые будут передаваться в процесс браузера Microsoft Edge при создании сеанса. Например, можно настроить браузер для запуска в режиме без головы.

var options = new EdgeOptions();
options.AddArgument("headless");

var driver = new EdgeDriver(options);

Другие параметры установки WebDriver

Docker

Если вы используете Docker, выполните следующую команду, чтобы скачать предварительно настроенный образ с предустановленными microsoft Edge и Microsoft Edge WebDriver.

docker run -d -p 9515:9515 mcr.microsoft.com/msedge/msedgedriver

Дополнительные сведения см. в разделе контейнер msedgedriver на Docker Hub.

Application Guard

Доверенные сайты, использующие Application Guard в Microsoft Defender, можно автоматизировать с помощью Microsoft Edge WebDriver. Application Guard в Microsoft Defender также называется Application Guard.

Ненадежные сайты, использующие Application Guard, нельзя автоматизировать или управлять с помощью Microsoft Edge WebDriver. Application Guard запускает ненадежные сайты в контейнере, и этот контейнер не предоставляет порт удаленной отладки, необходимый Microsoft Edge WebDriver для связи с сайтом.

Администратор предприятия определяет, какие сайты являются доверенными, включая облачные ресурсы и внутренние сети. Сайты, которые не входят в список доверенных сайтов, считаются ненадежными. Microsoft Edge WebDriver может автоматизировать как окна InPrivate, так и сайты в списке доверенных сайтов.

Дополнительные сведения о Application Guard см. в разделе:

Отказ от сбора диагностических данных

По умолчанию Microsoft Edge WebDriver отправляет в корпорацию Майкрософт такие диагностические данные, как состояние команды New Session WebDriver. Чтобы отключить сбор диагностических данных для Microsoft Edge WebDriver, задайте для переменной MSEDGEDRIVER_TELEMETRY_OPTOUT среды значение 1. Дополнительные сведения о данных, собираемых Microsoft Edge WebDriver, см. в техническом документе о конфиденциальности Microsoft Edge.

Устаревшая версия Microsoft WebDriver для EdgeHTML

Microsoft WebDriver — это устаревшая реализация WebDriver для Microsoft Edge на основе EdgeHTML. Microsoft WebDriver распространялся как необязательный компонент Windows, так как устаревшая версия Microsoft Edge (EdgeHTML) была обновлена с помощью ОС. Microsoft WebDriver несовместим с последними версиями Microsoft Edge на основе Chromium. Microsoft WebDriver по-прежнему доступен для разработчиков, написавших тесты на основе WebDriver для приложений UWP, так как они используют EdgeHTML, но Microsoft WebDriver больше не рекомендуется.

См. статью WebDriver (EdgeHTML).

Поиск и устранение неисправностей

Ниже приведены рекомендации по устранению неполадок при использовании WebDriver для автоматизации Microsoft Edge.

Политика доступности средств разработчика

Если ит-администратор установил для политики DeveloperToolsAvailability значение 2, Microsoft Edge WebDriver будет заблокировано использовать Microsoft Edge, так как драйвер использует средства разработки Microsoft Edge. Чтобы автоматизировать Microsoft Edge, убедитесь, что для политики DeveloperToolsAvailability задано значение 0 или 1.

Использование шаблона Visual Studio

Если вы используете шаблон Microsoft Edge WebDriver, который предоставляется вместе с Visual Studio, который создает простой тестовый проект, убедитесь, что вы сделали следующее:

  • Скачайте Microsoft Edge WebDriver и убедитесь, что он доступен в PATH.
  • Добавьте в проект платформу WebDriver (например, пакет NuGet Selenium.WebDriver ).

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

Ошибка из-за selenium Tools for Microsoft Edge

Если при попытке создать новый EdgeDriver экземпляр возникает следующая ошибка: System.MissingMethodException: 'Method not found: 'OpenQA.Selenium.Remote.DesiredCapabilities OpenQA.Selenium.DriverOptions.GenerateDesiredCapabilities(Boolean)', см. раздел Обновление с Selenium 3 до Selenium 4 ниже.

Обновление с Selenium 3 до Selenium 4

Если вы использовали Средства Selenium для Microsoft Edge, чтобы добавить поддержку Microsoft Edge в тесты браузера Selenium 3, обновите тесты до Selenium 4 следующим образом:

  1. Удалите selenium Tools for Microsoft Edge из проекта.

  2. Обновите тесты, чтобы использовать встроенные EdgeDriver и связанные классы, которые предоставляет Selenium 4. Необходимо обновить все существующие тесты Selenium 3 до Selenium 4. Дополнительные сведения об обновлении до Selenium 4 см. в статье Обновление до Selenium 4.

  3. Удалите все виды EdgeOptions.UseChromium использования свойства. Это свойство больше не существует в Selenium 4, так как Selenium 4 поддерживает только Microsoft Edge (Chromium обработчик браузера).

Selenium 3 не поддерживается

Чтобы автоматизировать Microsoft Edge с помощью WebDriver, убедитесь, что используется Selenium 4. Selenium 3 не поддерживается.

Все новые проекты, использующие Selenium, должны использовать Selenium 4. Чтобы автоматизировать Microsoft Edge с помощью WebDriver, убедитесь, что используется Selenium 4. Selenium 3 больше не поддерживается.

Инструменты Selenium для Microsoft Edge больше не используются

Selenium 4 не требует selenium Tools для Microsoft Edge. Selenium Tools for Microsoft Edge предназначен только для Selenium 3.

Не используйте Selenium 4 со средствами Selenium для Microsoft Edge, так как Selenium 4 уже имеет встроенную поддержку Microsoft Edge. При попытке использовать средства Selenium для Microsoft Edge при попытке создать новый EdgeDriver экземпляр вы получите следующую ошибку: System.MissingMethodException: 'Method not found: 'OpenQA.Selenium.Remote.DesiredCapabilities OpenQA.Selenium.DriverOptions.GenerateDesiredCapabilities(Boolean)'. Если вы используете Selenium 4 и получаете эту ошибку, удалите Microsoft.Edge.SeleniumTools из проекта и убедитесь, что используете официальные EdgeOptions классы и EdgeDriver из OpenQA.Selenium.Edge пространства имен.

См. также