В автоматизацията на Selenium, ако елементите не са намерени от общите локатори като id, клас, име и т.н., тогава XPath се използва за намиране на елемент на уеб страницата.
В този урок ще научим за xpath и различния израз на XPath, за да намерим сложните или динамични елементи, чиито атрибути се променят динамично при опресняване или всякакви операции.
В този урок за XPath ще научите -
- Какво е XPath?
- Видове X-път
- Абсолютен XPath
- Относителна XPath
- Основен XPath
- Съдържа()
- Използване на ИЛИ И И
- Стартира-с функция
- Текст()
- Методи на оси XPath
- Следва
- Предшественик
- Дете
- Предшестващо
- Следващ брат или сестра
- Родител
- Аз
- Потомък
Какво е XPath в селен?
XPath в Selenium е XML път, използван за навигация през HTML структурата на страницата. Това е синтаксис или език за намиране на който и да е елемент на уеб страница, използвайки израз на XML път. XPath може да се използва както за HTML, така и за XML документи, за да се намери местоположението на всеки елемент на уеб страница, използвайки HTML DOM структура.
Основният формат на XPath в селен е обяснен по-долу със снимка на екрана.
Основен формат на XPath
Синтаксис за XPath селен:
XPath съдържа пътя на елемента, разположен на уеб страницата. Стандартният синтаксис на XPath за създаване на XPath е.
Xpath = // име на маркера [@ attribute = 'value']
- //: Избор на текущ възел.
- Tagname: Tagname на конкретния възел.
- @: Изберете атрибут.
- Атрибут: Име на атрибута на възела.
- Стойност: Стойност на атрибута.
За да намерите елемента на уеб страниците точно, има различни видове локатори:
Локатори XPath | Намерете различни елементи на уеб страницата |
документ за самоличност | За да намерите елемента по ID на елемента |
Име на клас | За да намерите елемента по Classname на елемента |
Име | За да намерите елемента по име на елемента |
Текст на връзката | За да намерите елемента по текст на връзката |
XPath | XPath, необходим за намиране на динамичния елемент и преминаване между различни елементи на уеб страницата |
CSS път | CSS пътеката също така намира елементи, които нямат име, клас или ID. |
Видове X-път
Има два вида XPath:
1) Абсолютен XPath
2) Относителна XPath
Абсолютен XPath:
Това е директният начин за намиране на елемента, но недостатъкът на абсолютния XPath е, че ако има някакви промени, направени по пътя на елемента, тогава XPath се проваля.
Ключовата характеристика на XPath е, че започва с една наклонена черта (/), което означава, че можете да изберете елемента от основния възел.
По-долу е даден пример за абсолютен xpath израз на елемента, показан на екрана по-долу.
ЗАБЕЛЕЖКА: Можете да практикувате следното упражнение XPath на този http://demo.guru99.com/test/selenium-xpath.html
Щракнете тук, ако видеоклипът не е достъпен
Абсолютен XPath:
/ html / body / div [2] / div [1] / div / h4 [1] / b / html [1] / body [1] / div [2] / div [1] / div [1] / h4 [1] / b [1]
Абсолютен XPath
Относителна Xpath:
Относителният Xpath започва от средата на HTML DOM структурата. Започва с двойна наклонена черта (//). Той може да търси елементи навсякъде в уеб страницата, означава, че няма нужда да пишете дълъг xpath и можете да започнете от средата на HTML DOM структурата. Относителният Xpath винаги се предпочита, тъй като не е пълен път от основния елемент.
По-долу е даден пример за относителния XPath израз на същия елемент, показан на екрана по-долу. Това е често срещаният формат, използван за намиране на елемент от XPath.
Щракнете тук, ако видеоклипът не е достъпен
Относителна XPath: // div [@ class = 'featured-box cloumnsize1'] // h4 [1] // b [1]
Относителна XPath
Какво представляват осите XPath.
Осите XPath търсят различни възли в XML документ от текущия контекстен възел. Осите XPath са методите, използвани за намиране на динамични елементи, които иначе не са възможни от нормалния метод на XPath без идентификатор, име на клас, име и т.н.
Методите на оси се използват за намиране на онези елементи, които динамично се променят при опресняване или други операции. Има няколко метода на оси, които обикновено се използват в Selenium Webdriver като дете, родител, предшественик, брат или сестра, предшестващ, себе си и т.н.
Използване на XPath Handling сложни и динамични елементи в Selenium
1) Основен XPath:
Изразът XPath избира възли или списък с възли въз основа на атрибути като ID, Name, Classname и т.н. от XML документа, както е показано по-долу.
Xpath = // вход [@ name = 'uid']
Ето линк за достъп до страницата http://demo.guru99.com/test/selenium-xpath.html
Основен XPath
Някои по-основни изрази за xpath:
Xpath = // въвеждане [@ type = 'text']Xpath = // етикет [@ id = 'message23']Xpath = // вход [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']
2) Съдържа ():
Съдържа () е метод, използван в израз на XPath. Използва се, когато стойността на който и да е атрибут се променя динамично, например информация за вход.
Функцията за съдържане има способността да намира елемента с частичен текст, както е показано в примера под XPath.
В този пример се опитахме да идентифицираме елемента, като използвахме само частична текстова стойност на атрибута. В израза по-долу XPath вместо бутон за изпращане се използва частична стойност „sub“. Може да се забележи, че елементът е намерен успешно.
Пълната стойност на „Тип“ е „изпрати“, но използва само частична стойност „под“.
Xpath = // * [съдържа (@ тип, 'под')]
Пълната стойност на „name“ е „btnLogin“, но се използва само частична стойност „btn“.
Xpath = // * [съдържа (@ име, 'btn')]
В горния израз сме приели „name“ като атрибут и „btn“ като частична стойност, както е показано на екрана по-долу. Това ще намери 2 елемента (ВХОД И НУЛИРАНЕ), тъй като атрибутът им „name“ започва с „btn“.
По същия начин в израза по-долу сме приели „id“ като атрибут, а „message“ като частична стойност. Това ще намери 2 елемента („User-ID не трябва да е празно“ & „Паролата не трябва да бъде празно“), тъй като неговият атрибут „name“ започва със „message“.
Xpath = // * [съдържа (@ id, 'съобщение')]
В израза по-долу сме приели „текста“ на връзката като атрибут и „тук“ като частична стойност, както е показано на екрана по-долу. Това ще намери връзката („тук“), тъй като показва текста „тук“.
Xpath = // * [съдържа (текст (), 'тук')]Xpath = // * [съдържа (@ href, 'guru99.com')]
3) Използване на ИЛИ И И:
В ИЛИ израз се използват две условия, независимо дали първото условие ИЛИ второто условие трябва да е вярно. Също така е приложимо, ако някое от условията е вярно или може би и двете. Означава, че всяко едно условие трябва да е вярно за намиране на елемента.
В израза по-долу XPath той идентифицира елементите, чиито единични или и двете условия са верни.
Xpath = // * [@ type = 'submit' или @ name = 'btnReset']
Маркиране на двата елемента като елемент "LOGIN" с атрибут "type" и "RESET" с атрибут "name".
В израза И се използват две условия, и двете условия трябва да са верни за намиране на елемента. Не успява да намери елемент, ако някое от условията е невярно.
Xpath = // вход [@ type = 'submit' и @ name = 'btnLogin']
В израза по-долу се откроява елементът "ВХОД", тъй като има и атрибут "тип" и "име".
4) Xpath започва - с
XPath start-with () е функция, използвана за намиране на уеб елемента, чиято стойност на атрибута се променя при опресняване или от други динамични операции на уеб страницата. При този метод началният текст на атрибута се съпоставя, за да се намери елементът, чиято стойност на атрибута се променя динамично. Можете също така да намерите елементи, чиято стойност на атрибута е статична (не промени).
Например -: Да предположим, че идентификаторът на даден елемент се променя динамично като:
Id = "message12"
Id = "message345"
Id = "message8769"
и така нататък ... но първоначалният текст е същият. В този случай използваме израз „Започнете с израз“.
В израза по-долу има два елемента с идентификатор, стартиращ „съобщение“ (т.е. „User-ID не трябва да е празно“ и „Паролата не трябва да е празно“). В долния пример XPath намира онези елементи, чийто „ID“ започва с „съобщение“.
Xpath = // етикет [започва с (@ id, 'съобщение')]
5) Функция XPath Text ()
Функцията XPath text () е вградена функция на селен webdriver, която се използва за намиране на елементи въз основа на текст на уеб елемент. Помага за намирането на точните текстови елементи и локализира елементите в набора от текстови възли. Елементите, които трябва да бъдат разположени, трябва да бъдат под формата на низ.
В този израз, с текстова функция, намираме елемента с точно съвпадение на текста, както е показано по-долу. В нашия случай намираме елемента с текст "UserID".
Xpath = // td [text () = 'UserID']
6) Методи на оси XPath:
Тези методи на оси XPath се използват за намиране на сложни или динамични елементи. По-долу ще видим някои от тези методи.
За илюстриране на този метод на оси XPath ще използваме демонстрационния сайт на банка Guru99.
а) Следва:
Избира всички елементи в документа на текущия възел () [Полето за въвеждане на UserID е текущият възел], както е показано на екрана по-долу.
Xpath = // * [@ type = 'text'] // след :: вход
Има 3 „въведени“ възла, които съвпадат, като се използва „следната“ ос - парола, бутон за вход и нулиране. Ако искате да се съсредоточите върху някой конкретен елемент, тогава можете да използвате метода XPath по-долу:
Xpath = // * [@ type = 'text'] // след :: вход [1]
Можете да промените XPath според изискването, като поставите [1], [2]
… и така нататък.С въвеждането като „1“, снимката на екрана по-долу намира конкретния възел, който е елементът за въвеждане на „Парола“.
б) Предшественик:
Оста на предка избира всички предци елемент (баба и дядо, родител и т.н.) на текущия възел, както е показано на екрана по-долу.
В израза по-долу намираме предшествения елемент на текущия възел (възел "ИЗПИТВАНЕ НА ПРЕДПРИЯТИЕ").
Xpath = // * [text () = 'Enterprise Testing'] // предшественик :: div
Има 13 "div" възли, съвпадащи с помощта на оста "предшественик". Ако искате да се съсредоточите върху някой конкретен елемент, тогава можете да използвате XPath по-долу, където променяте числото 1, 2 според вашите изисквания:
Xpath = // * [text () = 'Тестване на предприятието'] // предшественик :: div [1]
Можете да промените XPath според изискването, като поставите [1], [2]
… и така нататък.в) Дете:
Избира всички дъщерни елементи на текущия възел (Java), както е показано на екрана по-долу.
Xpath = // * [@ id = 'java_technologies'] // дете :: li
Има 71 "li" възла, които съвпадат чрез използване на "детска" ос. Ако искате да се съсредоточите върху някой конкретен елемент, тогава можете да използвате долния xpath:
Xpath = // * [@ id = 'java_technologies'] // дете :: li [1]
Можете да промените xpath според изискването, като поставите [1], [2]
… и така нататък.г) Предшестващо:
Изберете всички възли, които идват преди текущия възел, както е показано на екрана по-долу.
В израза по-долу той идентифицира всички входни елементи преди бутона "ВХОД", който е елемент за въвеждане на Userid и парола .
Xpath = // * [@ type = 'submit'] // предшестващ :: вход
Има 2 „входни“ възла, които съвпадат чрез използване на „предходна“ ос. Ако искате да се съсредоточите върху някой конкретен елемент, можете да използвате XPath по-долу:
Xpath = // * [@ type = 'submit'] // предшестващ :: вход [1]
Можете да промените xpath според изискването, като поставите [1], [2]
… и така нататък.д) Следващ брат или сестра:
Изберете следните братя и сестри на контекстния възел. Братята и сестрите са на същото ниво на текущия възел, както е показано на екрана по-долу. Той ще намери елемента след текущия възел.
xpath = // * [@ type = 'submit'] // follow-sibling :: input
Един входен възел, съвпадащ с помощта на оста "следващ-брат".
е) Родител:
Избира родителя на текущия възел, както е показано на екрана по-долу.
Xpath = // * [@ id = 'rt-feature'] // родител :: div
Има 65 "div" възли, съвпадащи чрез използване на "родителска" ос. Ако искате да се съсредоточите върху някой конкретен елемент, можете да използвате XPath по-долу:
Xpath = // * [@ id = 'rt-feature'] // родител :: div [1]
Можете да промените XPath според изискването, като поставите [1], [2]
… и така нататък.ж) Аз:
Избира текущия възел или „самостоятелно“ означава, че той посочва самия възел, както е показано на екрана по-долу.
Съвпадение на един възел чрез използване на "самостоятелна" ос. Винаги намира само един възел, тъй като представлява самоелемент.
Xpath = // * [@ type = 'парола'] // self :: input
з) Потомък:
Избира потомците на текущия възел, както е показано на екрана по-долу.В израза по-долу той идентифицира всички потомци на елемента към текущия елемент (елемент на рамката „Основно тяло“), което означава долу под възела (дъщерен възел, възел на внука и т.н.).
Xpath = // * [@ id = 'rt-feature'] // низходящ :: a
Има 12 "връзки" възли, съвпадащи с помощта на оста "низходящ". Ако искате да се съсредоточите върху някой конкретен елемент, можете да използвате XPath по-долу:
Xpath = // * [@ id = 'rt-feature'] // низходящ :: a [1]
Можете да промените XPath според изискването, като поставите [1], [2]
… и така нататък.Резюме:
XPath се изисква, за да намери елемент на уеб страницата, за да извърши операция върху този конкретен елемент.
- Има два вида селен XPath:
- Абсолютен XPath
- Относителна XPath
- Осите XPath са методите, използвани за намиране на динамични елементи, които иначе не е възможно да се намерят чрез нормален метод XPath
- Изразът XPath избира възли или списък с възли въз основа на атрибути като ID, Име, Име на клас и т.н. от XML документа.