Selenium Основные расширения (User-Extensions.js)
⚡ Умное резюме
Selenium Основные расширения, также называемые пользовательскими расширениями, добавляют пользовательские действия, методы доступа и стратегии поиска. Selenium IDE путем подключения JavaФункции скрипта для Selenium а также прототипы объектов PageBot при запуске IDE.
Selenium Основные расширения
Чтобы понять, что такое расширения, давайте сначала разберемся в трех основных принципах их работы. Selenium IDEКаждая команда, которую вы записываете или вводите в IDE, относится к одной из трех категорий, перечисленных ниже, и на каждом скриншоте показано, как эта категория отображается в списке команд IDE.
- Действие: Какую операцию вы выполняете на экране пользовательского интерфейса?
- Дополнения / Утверждение: Какую проверку вы выполняете над данными, полученными из пользовательского интерфейса.
- Стратегия поиска: Как найти элемент в пользовательском интерфейсе.
Selenium В состав IDE входит развитая библиотека, которая уже содержит множество действий, методов доступа и утверждений, а также стратегий поиска.
Однако иногда проекту требуется функциональность, которой нет в этой библиотеке. В такой ситуации вы можете расширить библиотеку, добавив собственное пользовательское расширение. Эти пользовательские расширения называются расширение пользователя.
Например, предположим, вам нужно действие, которое преобразует текст в верхний регистр перед заполнением веб-элемента. В стандартной библиотеке такого действия нет, поэтому вы создаете собственное пользовательское расширение. В этом руководстве вы узнаете, как создать пользовательское расширение, которое преобразует текст в верхний регистр.
⚠️ Перед началом: Описанный здесь рабочий процесс относится к Selenium Ядро и оригинал Firefox-плагин Selenium IDE. Selenium Основной функционал был выведен из эксплуатации, а поддержка пользовательских расширений была прекращена. Selenium банки в Selenium 3. Приведенные ниже шаги и код сохранены, поскольку от них по-прежнему зависит большое количество устаревших пакетов Selenese; современная замена описана далее в этой статье.
Требование к созданию Selenium Расширение пользователя
Для создания пользовательского расширения для Selenium Для работы с IDE вам понадобятся базовые понятия. JavaСценарий и, в частности, JavaОбъект-прототип скрипта. На приведенной ниже диаграмме показаны два объекта-прототипа, к которым прикрепляется расширение пользователя.
Для создания пользовательского расширения вы пишете JavaСоздайте скрипты методов и добавьте их в Selenium прототип объекта и к прототипу объекта PageBot.
Как Selenium IDE распознает пользовательское расширение
После добавления пользовательского расширения в Selenium IDE запускается, и каждая зарегистрированная функция выполняется. JavaПрототипы скриптов загружены, и Selenium IDE распознает каждую команду по ее имени. Именно поэтому префиксы имен в следующем разделе — это не стилистический выбор, а способ классификации вашей команды IDE.
Как создать пользовательское расширение
Шаг 1) Действие – все действия начинаются с doЕсли действие преобразует текст в верхний регистр, его название будет следующим: doTextUpperCaseКогда вы добавляете этот метод действия в Selenium IDE сама создает соответствующий метод ожидания, поэтому doTextUpperCase также создает функцию ожидания textUpperCaseAndWaitДанный метод может принимать два параметра.
Пример: действие с текстом в верхнем регистре
Selenium.prototype.doTextUpperCase = function(locator, text) { // Here findElement is itself capable to handle all type of locator(xpath,css,name,id,className), We just need to pass the locator text var element = this.page().findElement(locator); // Create the text to type text = text.toUpperCase(); // Replace the element text with the new text this.page().replaceText(element, text); };
Шаг 2) Методы доступа / Утверждение – все зарегистрированные пользователи Selenium прототипы объектов имеют префикс в виде получить or isНапример, getValueFromCompoundTable или isValueFromCompoundTable. Метод доступа может принимать два параметра: один для целевого поля, а другой для поля значения в тестовом случае. На скриншоте ниже показано, как эти префиксы отображаются после загрузки расширения.
Для каждого аксессуара, Selenium IDE генерирует соответствующие функции проверки, перед которыми ставится префикс. проверить и утверждатьплюс функция ожидания, которой предшествует ждать.
Пример: Для доступа к тексту, написанному заглавными буквами
Selenium.prototype.assertTextUpperCase = function(locator, text) { // All locator-strategies are automatically handled by "findElement" var element = this.page().findElement(locator); // Create the text to verify text = text.toUpperCase(); // Get the actual element value var actualValue = element.value; // Make sure the actual value matches the expected Assert.matches(expectedValue, actualValue); }; Selenium.prototype.isTextEqual = function(locator, text) { return this.getText(locator).value===text; }; Selenium.prototype.getTextValue = function(locator, text) { return this.getText(locator).value; };
Шаг 3) Стратегия поиска – Если вы хотите создать собственную функцию для поиска элемента, расширьте прототип PageBot функцией с префиксом. locateElementByФункция принимает два параметра: строку-локатор и документ, в котором следует искать элемент.
Пример: для локатора текста в верхнем регистре
// The "inDocument" is a document you are searching. PageBot.prototype.locateElementByUpperCase = function(text, inDocument) { // Create the text to search for var expectedValue = text.toUpperCase(); // Loop through all elements, looking for ones that have // a value === our expected value var allElements = inDocument.getElementsByTagName("*"); // This star '*' is a kind of regular expression it will go through every element (in HTML DOM every element surely have a tag name like<body>,<a>,<h1>,<table>,<tr>,<td> etc. ). Here our motive is to find an element which matched with the Upper Case text we have passed so we will search it with all elements and when we get match we will have the correct web element. for (var i = 0; i < allElements.length; i++) { var testElement = allElements[i]; if (testElement.innerHTML && testElement.innerHTML === expectedValue) { return testElement; } } return null; };
Сохраните все три функции в одном файле с именем [название файла]. user-extensions.jsФайл простой. JavaЭто скрипт, поэтому подойдёт любой текстовый редактор.
Как использовать недавно созданное основное расширение
Загрузка файла в оригинале представляет собой четырехэтапную задачу. Firefox-плагин IDE. Каждый скриншот ниже соответствует пронумерованному шагу рядом с ним.
- Перейдите на Selenium IDE и щелчок Параметры -> Параметры…
- В Общие в разделе выберите местоположение только что созданного Selenium Расширение ядра.
- Нажмите OK и перезапустить Selenium IDE.
- Расширение вы найдете в списке команд.
Selenium Основные расширения против Selenium Расширения IDE
В более старых материалах эти два термина используются взаимозаменяемо, но они описывают разные уровни, и это различие имеет значение при принятии решения о том, куда разместить пользовательскую логику.
| Аспект | Selenium Основное расширение | Selenium Расширение IDE |
|---|---|---|
| Что это расширяет | Библиотека команд Selenese, используемая во время воспроизведения. | Само приложение IDE |
| Файл загружен | user-extensions.js | В устаревшей IDE используется файл user-extensions-ide.js, а в текущей IDE — манифест плагина. |
| Типичное использование | Новые стратегии действий, доступа и определения местоположения. | Новые пункты меню, панели, форматы и поведение средства записи. |
| Предметы, к которым прикасались | Selenium.prototype и PageBot.prototype | API редактора и средства записи IDE |
| Запускается во время | Тестовое выполнение | Создание и запись |
Короче говоря, расширение ядра изменяет возможности теста, а расширение IDE изменяет возможности инструмента.
Как современный Selenium IDE заменяет user-extensions.js
Firefox-плагин Selenium IDE перестала работать, когда Firefox Перешли на архитектуру WebExtensions, а IDE была переписана как Chrome. Firefox и расширение для браузера Edge. В результате этой переработки было удалено поле Options, показанное выше, поэтому нет места, где можно было бы указать на файл user-extensions.js. Два поддерживаемых альтернативных решения охватывают ту же область.
- Команда выполнения скрипта. Для разового использования JavaСкрипт, добавить выполнить скрипт or выполнить асинхронный скрипт Выполните шаг непосредственно в тесте и сохраните результат в переменной. Это наиболее близкий аналог небольшого пользовательского действия.
- Плагин. Для многократного использования команд создайте расширение для браузера, которое регистрирует манифест в IDE. Манифест объявляет каждую новую команду с идентификатором, именем, необязательным типом и документацией, а также может объявлять новые локаторы.
Манифест регистрируется путем отправки сообщения расширению IDE, как показано в официальном документе. Selenium документация по плагинам IDE.
browser.runtime.sendMessage(SIDE_ID, {
uri: "/register",
verb: "post",
payload: {
name: "Selenium IDE plugin",
version: "1.0.0",
commands: [
{ id: "textUpperCase", name: "text upper case" }
]
}
}).catch(console.error);
Принципы именования сохраняются и после миграции: команда плагина по-прежнему объявляется один раз и затем используется повторно во всех тестах, точно так же, как и расширение ядра.
Популярные расширения и плагины, используемые в Selenium IDE
Перечисленные ниже дополнения были наиболее широко используемыми в устаревшей IDE. Некоторые из них, такие как управление потоком выполнения и создание скриншотов при сбое, теперь встроены в текущую IDE или доступны в виде поддерживаемых плагинов.
| Имя | Цель |
|---|---|
| Избранное | Чтобы отметить набор тестов как избранный и запустить его одним щелчком мыши. |
| Флекс Пилот X | Для автоматизации на основе Flex |
| ФлексМонкиум | Для записи и воспроизведения на основе Adobe Flex тестов in Selenium IDE |
| Ведение журнала файлов | Для сохранения логов в файл |
| Управление потоком | Для управления потоком выполнения теста |
| Выделить элементы | Чтобы выделить веб-элемент управления |
| Неявное ожидание | Ожидание элемента в течение определенного временного интервала |
| Снимок экрана при ошибке | Сделать скриншот в случае неудачи |
| Результаты тестирования | Сохранить прецедент результат для набора тестов в один клик |
Старые SeleniumСтраница загрузки HQ, на которой размещались эти файлы, больше не существует. Текущие плагины и сама IDE распространяются из [ссылка на источник]. Selenium сайт проекта IDE и из Chrome, Firefox а также магазины дополнений Edge.
Скачать Selenium Базовое расширение, используемое в этом руководстве









