xpath functions dynamic xpath selenium
Този урок обяснява използването на XPath функции при идентифициране на елементите с примери:
Преди да автоматизирате който и да е уебсайт, е необходимо да идентифицирате обекта правилно, преди да можем да извършим каквато и да е операция върху същия. Както знаем, че най-лесният начин за идентифициране на елемента е чрез атрибути като ID, Name, Link, Class или всеки друг уникален атрибут, наличен с маркера, където се намира елементът.
Това е възможно само когато тези атрибути присъстват и / или са уникални, така че обектът да е идентифициран правилно.
=> Погледнете тук ръководството за начинаещи за селен.
Какво ще научите:
Преглед на функциите на XPath
Нека обсъдим сценария, при който атрибутите не са лесно достъпни.
Декларация за проблема
Как да идентифицираме елемента, ако локаторите като ID, Name, Class, Link и т.н. не са налични в маркера на елемента?
Това може да се разбере ясно с дадения пример:
Влезте в Twitter
Както можете да видите на горната екранна снимка, заглавката „Влезте в Twitter“ няма прикрепени атрибути. Като казахме това, не можем да използваме нито един от локаторите като ID, Class, Link или Name, за да идентифицираме този елемент.
какво е iomanip в c ++
Приставката Firepath на инструмента Firefox генерира XPath по-долу:
// * [@ id = ’page-container’] / div / div [1] / h1
Няма да препоръчваме използването на горния XPath като структура на страницата или идентификатор, тъй като може да се променя динамично. Ако все пак използваме този нестабилен XPath, може да се наложи да сменяме XPath по-често, което отнема повече време за поддръжка. Това е един случай, когато не можем да използваме общия израз на XPath с локатори като id, клас, име или връзка.
Решение
Идентифициране на елемента с помощта на функциите XPath по текст
Тъй като разполагаме с видимия текст „Влезте в Twitter“, ще използваме следното Функции XPath за уникално идентифициране на елемента.
- съдържа () [По текст]
- започва с () [По текст]
- текст()
Функциите XPath като contains (), start-with () и text (), когато се използват с помощта на текст „Влезте в Twitter“, ще ни помогнат да идентифицираме елемента правилно и по-нататъшни операции могат да бъдат извършени върху същия.
# 1) Съдържа () Метод:
Синтаксис: За да намерите уеб-елемента „Влезте в Twitter“, използвайте някой от следните изрази XPath, които включват метода contains ().
По текст
- // h1 [съдържа (текст (), ‘Влезте в’)]
- // h1 [съдържа (текст (), ‘в към Twitter’)]
Забележка: 1 съвпадащ възел показва, че уеб елементът е идентифициран успешно.
От горния пример става ясно, че методът contains () не се нуждае от абсолютния (пълен) текст, за да идентифицира елемента правилно. Частичният текст е достатъчен, за да го идентифицира правилно. Избраният частичен текст обаче трябва да бъде уникален. Потребителят може лесно да идентифицира елемента, дори ако ориентацията на страницата се промени с помощта на метода contains ().
Моля, обърнете внимание, че дори ако използвате абсолютния текст „Влезте в Twitter“ с метода contains (), елементът ще бъде идентифициран правилно.
# 2) Методът започва с ():
Синтаксис: За да намерите уеб-елемента „Влезте в Twitter“, използвайте следните примерни изрази XPath, които имат метод start-with ().
По текст
- // h1 [започва-с (текст (), ‘Вход’)]
- // h1 [започва с (текст (), ‘Влезте в’)]
От горния пример става ясно, че методът XPath functions start-with () изисква поне първата дума („Log“) от видимия текст, за да идентифицира уникално елемента. Той работи и върху частичния текст и ще се провали, ако не включим първата дума от частично видимия текст.
Моля, обърнете внимание, че дори ако използвате абсолютния текст „Влезте в Twitter“ с метода start-with (), елементът ще бъде идентифициран правилно.
Невалиден XPath за стартиране с (): // h1 [започва с (текст (), ‘в към Twitter’)]
Забележка: Никакви съвпадащи възли не показват, че уеб елементът не е идентифициран.
# 3) Метод Text ():
Синтаксис: За да намерите уеб-елемента „Влезте в Twitter“, използвайте следния израз на XPath, който има метод text ().
В този израз използваме абсолютния текст, който присъства между началния таг. Ако използваме функцията text () с частичен Xpath, както правим в contains () и start-with (), не бихме могли да намерим елемента.
Невалиден Xpath за текст ():
Идентифициране на елемента с помощта на функциите XPath по атрибут
Използваме функциите XPath (съдържа или започва с) с атрибут, когато в маркера на контейнера има налични уникално идентифицирани стойности на атрибутите. Атрибутите са достъпни с помощта на символа “@”.
Това може да се разбере ясно с даденото пример:
Влезте в Google
# 1) Съдържа () Метод:
Синтаксис: За да идентифицирате уникално елемента на бутона „Чувствам се късметлия“ с помощта на функцията XPath съдържа () с помощта на атрибут.
(i) По атрибут стойност:
- // вход [съдържа (@ стойност, ‘Чувство’)]
- // вход [съдържа (@ стойност, ‘Щастлив’)]
От горните изображения се разбира, че използването на стойността на атрибута с метода „Feeling“ или „Lucky“ with contains () ще идентифицира уникално елемента. Важно е обаче да се отбележи, че дори ако използваме пълното съдържание на атрибута Value, той ще идентифицира елемента правилно.
(ii) По атрибут Име:
//input[contains(@name=’btnI’)]
Невалидният регистър на функцията XPath с атрибут:
Трябва да бъдем много внимателни при избора на атрибут, който да се използва с метода contains () и start-with (). Ако стойността на атрибута не е уникална, няма да можем да идентифицираме уникално елемента.
Да предположим, че ако вземем атрибута „type“, когато идентифицираме бутона „Чувствам се късметлия“, XPath няма да работи.
2 съвпадащи възли показват, че елементът не е идентифициран правилно. Тук стойността на атрибута type не е уникална.
# 2) Методът започва с ():
Методът start-with () с атрибута е много полезен, когато трябва да намерим елементите, чиято първа част от атрибута остава фиксирана, докато по-късната част продължава да се променя. Този подход е много полезен, когато обектите динамично променят стойността на своите атрибути. Това може да се използва и ако искаме да заснемем подобни видове елементи.
Отидете на Facebook вход
Проверете първото текстово поле „Име“ и второто текстово поле „Фамилия“ на формуляра за регистрация.
Идентифицирано е първото текстово поле „Име“.
Идентифицирано е второто текстово поле „Фамилия“.
И в двете текстови полета, които са идентифицирани за Регистрация за Facebook, началната част на атрибутите id остава непроменена.
Име id = “u_0_2”
Име на фамилията = ’u_0_4”
Това е сценарият, при който можем да използваме атрибута start-with (), за да получим всички елементи под такъв тип атрибут id. Моля, обърнете внимание, че ние приемаме тези две полета само за наша справка. На екрана обаче може да има повече полета с идентификатори, които започват с „u_0_“.
Започва с () [По атрибут id]
//input[starts-with(@id,”u_0_”)]
Важна забележка: Тук сме използвали двойни кавички вместо единични кавички. Но единичните кавички също ще работят с метода start-with.
11 съвпадащи възли показват, че този XPath е идентифицирал всички елементи, които тези идентификатори започват с „u_0_“. Последната част на идентификатора (2 за собствено име, 4 за фамилия и т.н.) определя как ние уникално идентифицираме елемента.
Можем да използваме атрибута start-with function, където трябва да съберем подобен тип елементи в списък и динамично да изберем един от тях, заобикаляйки аргумента в общ метод, за да идентифицираме уникално елемента.
Моля, следвайте примера по-долу, за да използвате функцията за стартиране в наша полза.
Примерен код:
/* Generic Method */ public void xpathLoc(String identifier){ //The below step identifies the element “First Name” uniquely when the argument is “2” WebElement E1=d1.findElement(By.xpath('//input[starts-with(@id,”u_0_”+identifier )]')); E1.sendKeys(“Test1”); /* This step enters the value of First Name as “Test 1” */ } /* Main Method */ public static void main(String[] args) { xpathLoc(“2”); --- This step calls the xpathLoc() method to identify the first name. }
Забележка: Eclipse може да не позволява използването на двойни кавички. Може да се наложи да прибегнете до различен код, за да направите динамичен XPath.
Примерният код е даден за справка. Можете да го подобрите, за да се побере във всички елементи и операции, които искате да извършите, и стойностите, които искате да въведете (в случай на текстови полета), за да направите кода по-гъвкав.
Заключение
Тази статия обяснява как можем да използваме функциите XPath, съдържащи (), започващи с () и текст () с атрибут и текст, за да идентифицираме уникално елементите в структурата на HTML DOM.
По-долу са някои от наблюденията, които можем да направим за функциите XPath:
- Използвайте метода “contains ()” в XPath, ако знаете частичния константа видим текст или атрибут.
- Използвайте метода “start-with ()” в XPath, ако знаете първоначалния частичен константен видим текст или атрибут.
- Можете също да използвате метода contains () и start-with () с абсолютен текст или атрибут.
- Използвайте метода “text ()” в XPath, ако сте наясно с абсолютно видимия текст.
- Не можете да използвате метод text () с частичния текст.
- Не можете да използвате метода start-with (), ако първоначалният текст не се използва в XPath или ако първоначалният текст непрекъснато се променя.
В следващия урок ще научим как да използваме оси XPath с XPath функции, за да подобрим допълнително местоположението на елементите на наличната уеб страница.
=> Прочетете серията Easy Training Training.
Препоръчително четене
- Локатори на селен: Идентифициране на уеб елементи с помощта на XPath в селен (примери)
- Работа с уеб таблици, рамки и динамични елементи в Selenium Script - Селен Урок # 18
- Функции на низовете на Python
- Следпроцесор на Xpath Extractor в JMeter
- Намиране на елемент от селен чрез урок с текст с примери
- Урок за краставици селен: Интеграция на краставица Java Selenium WebDriver
- Изчерпателен урок за XPath - XML Path Language
- Въведение в Selenium WebDriver - Урок № 8 за селен