Щоб зрозуміти розширення, давайте спочатку зрозуміємо три опори селену 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", а префікс функції wait - "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 очікувана значення = text.toUpperCase ();// Прокрутіть усі елементи, шукаючи ті, які є// значення === наше очікуване значенняvar allElements = inDocument.getElementsByTagName ("*");// Ця зірка '*' - це свого роду регулярний вираз, який буде проходити через кожен елемент (у HTML DOM кожен елемент напевно має ім'я тегу, як , ,,