Чтобы понять расширения, давайте сначала разберемся с тремя столпами selenium IDE.
- Действие: какую операцию вы выполняете на экране пользовательского интерфейса
- Оценщики / Утверждение: как вы проверяете данные, полученные из пользовательского интерфейса.
- Стратегия локатора: как найти элемент в пользовательском интерфейсе.
Теперь в Selenium IDE есть очень зрелая библиотека с множеством действий, утверждений / оценщиков и стратегий поиска.
Но иногда нам нужно добавить к нему дополнительные функции для требований нашего проекта. В этой ситуации мы можем расширить эту библиотеку, добавив наши собственные расширения. Эти специальные расширения называются «Пользовательское расширение».
Например, нам нужно действие, которое может преобразовать текст в верхний регистр перед его заполнением в веб-элементе. Вы не можете найти это действие в библиотеке действий по умолчанию. В таком случае вы можете создать собственное «Расширение пользователя». В этом руководстве мы узнаем, как создать пользовательское расширение для преобразования текста в верхний регистр.
Требование для создания пользовательского расширения Selenium:
Чтобы создать пользовательское расширение для Selenium IDE, нам необходимо знать базовую концепцию объекта-прототипа JavaScript и Java Script.
Чтобы создать пользовательское расширение, вам необходимо создать методы сценария Java и добавить их в прототип объекта селена и прототип объекта PageBot.
Как Selenium IDE распознает расширение пользователя?
После добавления пользовательского расширения в Selenium IDE при запуске Selenium IDE все эти расширения в прототипе javascript загружаются, и Selenium IDE распознает их по имени.
Как создать расширение пользователя
Шаг 1) Действие - все действия запускаются с «do», т.е. если действие для текста в верхнем регистре, его имя будет doTextUpperCase. Когда мы добавляем этот метод действия в Selenium IDE, Selenium IDE сама создаст метод ожидания для этого действия. Итак, в этом случае, когда мы создаем действие doTextUpperCase , Selenium IDE создаст соответствующую функцию ожидания как TextUpperCaseAndWait . Он может принимать два параметра
Пример: действие с текстом в верхнем регистре
Selenium.prototype.doTextUpperCase = function (locator, text) {// Здесь findElement способен обрабатывать все типы локаторов (xpath, css, name, id, className), нам просто нужно передать текст локатораvar element = this.page (). findElement (локатор);// Создаем текст для вводатекст = текст.toUpperCase ();// Заменить текст элемента новым текстомthis.page (). replaceText (элемент, текст);};
Шаг 2) Оценщики / Утверждение. Все оценщики, зарегистрированные в прототипе объекта селена, будут иметь префикс.
на "получить" или "равно" Пример. getValueFromCompoundTable, isValueFromCompoundTable. Он может принимать два параметра, один для цели, а другой для поля значения в тестовом примере.
Для каждого Оценщика будут соответствующие функции проверки с префиксом «verify», «assert» и префиксом функции ожидания «waitFor».
Пример: для оценщиков текста в верхнем регистре
Selenium.prototype.assertTextUpperCase = function (locator, text) {// Все стратегии-локаторы автоматически обрабатываются findElementvar element = this.page (). findElement (локатор);// Создаем текст для проверкитекст = текст.toUpperCase ();// Получаем фактическое значение элементаvar actualValue = element.value;// Убедитесь, что фактическое значение соответствует ожидаемомуAssert.matches (ожидаемое значение, фактическое значение);};Selenium.prototype.isTextEqual = function (locator, text) {вернуть this.getText (локатор) .value === текст;};Selenium.prototype.getTextValue = function (locator, text) {вернуть this.getText (локатор) .value;};
Шаг 3) Стратегия локатора. Если мы хотим создать нашу собственную функцию для поиска элемента, тогда
нам нужно расширить прототип PageBot функцией с префиксом locateElementBy.
Он принимает два параметра, первый - это строка локатора, а второй - документ.
где это нужно искать.
Пример: для локатора текста в верхнем регистре
// «inDocument» - это документ, который вы ищете.PageBot.prototype.locateElementByUpperCase = function (text, inDocument) {// Создаем текст для поискаvar expectedValue = text.toUpperCase ();// Перебираем все элементы в поисках тех, у которых есть// значение === наше ожидаемое значениеvar allElements = inDocument.getElementsByTagName ("*");// Эта звездочка '*' - это своего рода регулярное выражение, которое будет проходить через каждый элемент (в HTML DOM каждый элемент обязательно имеет имя тега, например , ,,