XPath в Selenium: Как се намира и пише? (Текст, Съдържа, И)
В какво е XPath Selenium?
XPath в Selenium е XML път, използван за навигация през HTML структурата на страницата. Това е синтаксис или език за намиране на всеки елемент на уеб страница, използвайки израз на XML път. XPath може да се използва както за HTML, така и за XML документи, за да се намери местоположението на всеки елемент на уеб страница, като се използва HTML DOM структура.
In Selenium автоматизация, ако елементите не са намерени от общите локатори като id, class, name и т.н., тогава XPath се използва за намиране на елемент на уеб страницата.
В този урок ще научим за Xpath и различни XPath изрази, за да намерим сложните или динамични елементи, чиито атрибути се променят динамично при опресняване или при всякакви операции.
Синтаксис на XPath
XPath съдържа пътя на елемента, разположен на уеб страницата. Стандартният XPath синтаксис за създаване на XPath е.
Xpath=//tagname[@attribute='value']
Основният формат на XPath в селен е обяснен по-долу с екранна снимка.
- // : Изберете текущия възел.
- име на етикет: Име на етикет на конкретния възел.
- @: Изберете атрибут.
- Атрибут: Име на атрибута на възела.
- Стойност: Стойност на атрибута.
За точно намиране на елемента на уеб страници има различни видове локатори:
XPath локатори | Намерете различни елементи на уеб страницата |
---|---|
ID | За да намерите елемента по ID на елемента |
Име на клас | За да намерите елемента по име на клас на елемента |
Име | За да намерите елемента по име на елемента |
Текст на връзката | Да намерите елемента по текста на връзката |
XPath | XPath, необходим за намиране на динамичния елемент и преминаване между различни елементи на уеб страницата |
CSS път | CSS пътят също намира елементи без име, клас или ID. |
Видове X-path
Има два вида 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 започва от средата на HTML DOM структурата. Започва с двойна наклонена черта (//). Може да търси елементи навсякъде в уеб страницата, което означава, че няма нужда да пишете дълъг xpath и можете да започнете от средата на HTML DOM структурата. Относителният Xpath винаги се предпочита, тъй като не е пълен път от коренния елемент.
По-долу е примерът на относителен XPath израз на същия елемент, показан на екрана по-долу. Това е често срещаният формат, използван за намиране на елемент от XPath.
Кликнете тук ако видеото не е достъпно
Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]
Какво представляват XPath осите.
XPath осите търсят различни възли в XML документ от текущия контекстен възел. XPath Axes са методите, използвани за намиране на динамични елементи, които иначе не са възможни чрез нормален XPath метод без ID, име на клас, име и т.н.
Методите на осите се използват за намиране на онези елементи, които динамично се променят при опресняване или други операции. Има няколко метода на брадви, които обикновено се използват в Selenium Уебдрайвер като дете, родител, предшественик, брат или сестра, предходен, себе си и т.н.
Как да напишете динамичен XPath Selenium уебдрайвер
1) Основен XPath
XPath изразът избира възли или списък от възли въз основа на атрибути като ID, име, име на класи т.н. от XML документа, както е илюстрирано по-долу.
Xpath=//input[@name='uid']
Ето линк за достъп до страницата http://demo.guru99.com/test/selenium-xpath.html
Някои по-основни xpath изрази:
Xpath=//input[@type='text'] Xpath=//label[@id='message23'] Xpath=//input[@value='RESET'] Xpath=//*[@class='barone'] Xpath=//a[@href='http://demo.guru99.com/'] Xpath=//img[@src='//guru99.com/images/home/java.png']
2) Съдържа()
Contains() е метод, използван в XPath израз. Използва се, когато стойността на всеки атрибут се променя динамично, например информация за вход.
Функцията за съдържане има възможност да намери елемента с частичен текст, както е показано в примера на XPath по-долу.
В този пример се опитахме да идентифицираме елемента, като просто използвахме частична текстова стойност на атрибута. В израза на XPath по-долу частичната стойност „sub“ се използва вместо бутона за изпращане. Може да се види, че елементът е намерен успешно.
Пълната стойност на „Type“ е „submit“, но използва само частична стойност „sub“.
Xpath=//*[contains(@type,'sub')]
Пълната стойност на 'name' е 'btnLogin', но използва само частична стойност 'btn'.
Xpath=//*[contains(@name,'btn')]
В горния израз сме взели „име“ като атрибут и „btn“ като частична стойност, както е показано на екранната снимка по-долу. Това ще намери 2 елемента (LOGIN & RESET), тъй като атрибутът им 'name' започва с 'btn'.
По същия начин в израза по-долу сме приели „id“ като атрибут и „message“ като частична стойност. Това ще намери 2 елемента („Идентификаторът на потребителя не трябва да е празен“ и „Паролата не трябва да е празен“), тъй като неговият атрибут „id“ започва с „message“.
Xpath=//*[contains(@id,'message')]
В израза по-долу сме взели „текста“ на връзката като атрибут и „тук“ като частична стойност, както е показано на екранната снимка по-долу. Това ще намери връзката („тук“), тъй като показва текста „тук“.
Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]
3) Използване на ИЛИ & И
В израза ИЛИ се използват две условия, дали 1-во условие ИЛИ 2-ро условие трябва да е вярно. Също така е приложимо, ако някое условие е вярно или може би и двете. Означава, че всяко едно условие трябва да е вярно, за да се намери елементът.
В израза на XPath по-долу той идентифицира елементите, чието едно или и двете условия са верни.
Xpath=//*[@type='submit' or @name='btnReset']
Маркиране на двата елемента като елемент „LOGIN“ с атрибут „type“ и елемент „RESET“ с атрибут „name“.
В израза И се използват две условия, и двете условия трябва да са верни, за да се намери елементът. Не успява да намери елемент, ако някое условие е невярно.
Xpath=//input[@type='submit' and @name='btnLogin']
В израза по-долу, маркиране на елемента „ВХОД“, тъй като има атрибут „тип“ и „име“.
4) Xpath започва с
XPath започва с() е функция, използвана за намиране на уеб елемент, чиято стойност на атрибут се променя при опресняване или чрез други динамични операции на уеб страницата. При този метод началният текст на атрибута се съпоставя, за да се намери елементът, чиято стойност на атрибута се променя динамично. Можете също така да намерите елементи, чиято стойност на атрибута е статична (не се променя).
Например -: Да предположим, че идентификаторът на определен елемент се променя динамично като:
Id=” съобщение12″
Id=” съобщение345″
Id=” съобщение8769″
и така нататък.. но първоначалният текст е същият. В този случай използваме израз Start-with.
В израза по-долу има два елемента с идентификатор, започващ със „съобщение“ (т.е. „Потребителското име не трябва да е празно“ и „Паролата не трябва да е празно“). В примера по-долу XPath намира онези елементи, чийто „ID“ започва с „message“.
Xpath=//label[starts-with(@id,'message')]
5) Функция XPath Text().
- Функция XPath text(). е вградена функция на selenium webdriver, която се използва за локализиране на елементи въз основа на текст на уеб елемент. Той помага да се намерят точните текстови елементи и намира елементите в набора от текстови възли. Елементите, които трябва да бъдат разположени, трябва да са в низова форма.
В този израз с текстова функция намираме елемента с точно текстово съвпадение, както е показано по-долу. В нашия случай намираме елемента с текст „UserID“.
Xpath=//td[text()='UserID']
Методи за оси на XPath
Тези методи на XPath оси се използват за намиране на сложни или динамични елементи. По-долу ще видим някои от тези методи.
За да илюстрираме този метод на XPath оси, ще използваме демонстрационния сайт на банката Guru99.
1) Следване
Избира всички елементи в документа на текущия възел ( ) [Полето за въвеждане на UserID е текущият възел], както е показано на екрана по-долу.
Xpath=//*[@type='text']//following::input
Има 3 „входни“ възли, съвпадащи чрез използване на „следваща“ ос – парола, вход и бутон за нулиране. Ако искате да се съсредоточите върху конкретен елемент, тогава можете да използвате метода XPath по-долу:
Xpath=//*[@type='text']//following::input[1]
Можете да промените XPath според изискването, като поставите [1], [2]…………и така нататък.
С въвеждане като „1“, екранната снимка по-долу намира конкретния възел, който е елемент на полето за въвеждане „Парола“.
2) Прародител
Оста на предшественика избира всички елементи на предшественици (прародител, родител и т.н.) на текущия възел, както е показано на екрана по-долу.
В израза по-долу намираме елемент на предшественик на текущия възел (възел „ТЕСТВАНЕ НА ПРЕДПРИЯТИЕ“).
Xpath=//*[text()='Enterprise Testing']//ancestor::div
Има 13 „div“ възли, съвпадащи с помощта на „предшественик“ ос. Ако искате да се съсредоточите върху конкретен елемент, можете да използвате XPath по-долу, където променяте числото 1, 2 според вашите изисквания:
Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]
Можете да промените XPath според изискването, като поставите [1], [2]…………и така нататък.
3) Дете
Избира всички дъщерни елементи на текущия възел (Java), както е показано на екрана по-долу.
Xpath=//*[@id='java_technologies']//child::li
Има 71 „li“ възли, съвпадащи с помощта на „дете“ ос. Ако искате да се съсредоточите върху конкретен елемент, можете да използвате xpath по-долу:
Xpath=//*[@id='java_technologies']//child::li[1]
Можете да промените xpath според изискването, като поставите [1], [2]…………и така нататък.
4) Предхождащ
Изберете всички възли, които идват преди текущия възел, както е показано на екрана по-долу.
В израза по-долу той идентифицира всички входни елементи преди бутона „ВХОД“, т.е Потребителско име намлява парола входен елемент.
Xpath=//*[@type='submit']//preceding::input
Има 2 „входни“ възела, съвпадащи с помощта на „предходна“ ос. Ако искате да се съсредоточите върху конкретен елемент, можете да използвате XPath по-долу:
Xpath=//*[@type='submit']//preceding::input[1]
Можете да промените xpath според изискването, като поставите [1], [2]…………и така нататък.
5) Следващ брат
Изберете следните братя и сестри на контекстния възел. Братята и сестрите са на същото ниво на текущия възел, както е показано на екрана по-долу. Той ще намери елемента след текущия възел.
xpath=//*[@type='submit']//following-sibling::input
Съвпадение на един входен възел чрез използване на ос „следващ брат“.
6) Родител
Избира родителя на текущия възел, както е показано на екрана по-долу.
Xpath=//*[@id='rt-feature']//parent::div
Има 65 „div“ възли, съвпадащи с помощта на „родителска“ ос. Ако искате да се съсредоточите върху конкретен елемент, можете да използвате XPath по-долу:
Xpath=//*[@id='rt-feature']//parent::div[1]
Можете да промените XPath според изискването, като поставите [1], [2]…………и така нататък.
7) Аз
Избира текущия възел или „self“ означава, че посочва самия възел, както е показано на екрана по-долу.
Съвпадение на един възел чрез използване на „самостоятелна“ ос. Той винаги намира само един възел, тъй като представлява собствен елемент.
Xpath =//*[@type='password']//self::input
8) Потомък
Избира наследниците на текущия възел, както е показано на екрана по-долу.
В израза по-долу той идентифицира всички елементи, наследници на текущия елемент (рамков елемент „Основно тяло“, което означава надолу под възела (възел дъщер, възел внук и т.н.).
Xpath=//*[@id='rt-feature']//descendant::a
Има 12 „връзки“ възли, съвпадащи чрез използване на „потомствена“ ос. Ако искате да се съсредоточите върху конкретен елемент, можете да използвате XPath по-долу:
Xpath=//*[@id='rt-feature']//descendant::a[1]
Можете да промените XPath според изискването, като поставите [1], [2]…………и така нататък.
Oбобщение
XPath е необходим, за да намери елемент на уеб страницата и да извърши операция върху този конкретен елемент.
- Има два вида селен XPath:
- Абсолютен XPath
- Относителен XPath
- Осите на XPath са методите, използвани за намиране на динамични елементи, които иначе не могат да бъдат намерени чрез нормален метод на XPath
- XPath изразът избира възли или списък от възли въз основа на атрибути като ID, Име, Име на клас и т.н. от XML документа.
Също така проверете: - Selenium Урок за начинаещи: Научете WebDriver за 7 дни