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
Основен формат на 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

Относителен Xpath

Относителен Xpath започва от средата на HTML DOM структурата. Започва с двойна наклонена черта (//). Може да търси елементи навсякъде в уеб страницата, което означава, че няма нужда да пишете дълъг xpath и можете да започнете от средата на HTML DOM структурата. Относителният Xpath винаги се предпочита, тъй като не е пълен път от коренния елемент.

По-долу е примерът на относителен XPath израз на същия елемент, показан на екрана по-долу. Това е често срещаният формат, използван за намиране на елемент от XPath.

Кликнете тук ако видеото не е достъпно

Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]

Относителен XPath

Относителен XPath

Какво представляват 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

Някои по-основни 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')]

Xpath започва с

5) Функция XPath Text().

- Функция XPath text(). е вградена функция на selenium webdriver, която се използва за локализиране на елементи въз основа на текст на уеб елемент. Той помага да се намерят точните текстови елементи и намира елементите в набора от текстови възли. Елементите, които трябва да бъдат разположени, трябва да са в низова форма.

В този израз с текстова функция намираме елемента с точно текстово съвпадение, както е показано по-долу. В нашия случай намираме елемента с текст „UserID“.

Xpath=//td[text()='UserID']

Функция XPath Text().

Методи за оси на 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 дни

Чети повече…