За да разберем разширенията, нека първо разберем трите стълба на селен 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 = функция (локатор, текст) {// Тук findElement сам е в състояние да обработва всички видове локатори (xpath, css, name, id, className), просто трябва да предадем текста на локатораvar елемент = this.page (). findElement (локатор);// Създаване на текст за въвежданеtext = text.toUpperCase ();// Заменете текста на елемента с новия текстthis.page (). replaceText (елемент, текст);};
Стъпка 2) Оценители / твърдение - Всички оценители, регистрирани в прототип на селен обект, ще бъдат с префикс
чрез "get" или "is" Ex. getValueFromCompoundTable, isValueFromCompoundTable. Той може да приеме два параметъра, един за цел и друг за поле за стойност в тестовия случай.
За всеки оценител ще има съответни функции за проверка с префикс от "verify", "assert" и префикс на функцията за чакане от "waitFor"
Пример: За оценители на главни букви
Selenium.prototype.assertTextUpperCase = функция (локатор, текст) {// Всички стратегии за локатор автоматично се обработват от "findElement"var елемент = this.page (). findElement (локатор);// Създаване на текст за проверкаtext = text.toUpperCase ();// Вземете действителната стойност на елементаvar actualValue = element.value;// Уверете се, че действителната стойност съвпада с очакванатаAssert.matches (очаквана стойност, действителна стойност);};Selenium.prototype.isTextEqual = функция (локатор, текст) {върнете this.getText (локатор) .value === текст;};Selenium.prototype.getTextValue = функция (локатор, текст) {върнете this.getText (локатор) .value;};
Стъпка 3) Стратегия за локатор - Ако искаме да създадем наша собствена функция за намиране на елемент тогава
трябва да разширим прототипа PageBot с функция с префикс "locateElementBy."
Ще са необходими два параметъра, първият ще бъде низът на локатора, а вторият ще бъде документът
където трябва да се търси.
Пример: За локатор на текст с главни букви
// "InDocument" е документ, който търсите.PageBot.prototype.locateElementByUpperCase = функция (текст, inDocument) {// Създаване на текст за търсенеvar očekujeValue = text.toUpperCase ();// Прегледайте всички елементи, търсейки такива, които имат// стойност === нашата очаквана стойностvar allElements = inDocument.getElementsByTagName ("*");// Тази звезда '*' е вид регулярен израз, който ще премине през всеки елемент (в HTML DOM всеки елемент със сигурност има име на маркер като , ,,