XPath съдържа, След брат или сестра, Предшественик & Селен И / ИЛИ

Съдържание:

Anonim

Ако един прост XPath не е в състояние да намери сложен уеб елемент за нашия тестов скрипт, трябва да използваме функциите от библиотеката XPath 1.0. С комбинацията от тези функции можем да създадем по-специфичен XPath. Нека обсъдим 3 такива функции -

  1. Съдържа
  2. Брат или сестра
  3. Предшественик
  4. И ИЛИ
  5. Родител
  6. Започва с
  7. Оси XPath

Нека ги изучим подробно -

Какво съдържа () в селен?

contains () в Selenium е функция в израза Xpath, която се използва за търсене на уеб елементите, които съдържат определен текст. Можем да извлечем всички елементи, които съответстват на дадената текстова стойност, като използваме функцията XPath contains () в цялата уеб страница. Съдържа в XPath има способността да намира елемента с частичен текст.

Напр. Тук търсим котва .съдържа текст като 'SAP M'.

"// h4 / a [съдържа (текст (), 'SAP M')]"

ЗАБЕЛЕЖКА: Можете да практикувате следното упражнение XPath на този http://demo.guru99.com/test/selenium-xpath.html

Какво е брат или сестра в Selenium Webdriver?

А сродната в Селен Webdriver е функция се използва за извличане на уеб елемент, който е брат на майка елемент. Ако родителският елемент е известен, тогава уеб елементът може лесно да бъде намерен или разположен, който може да използва атрибута на брат или сестра на израза Xpath в селен webdriver.

Пример за брат или сестра в XPath: Тук на базата на елемента на брат и сестра на „a“ намираме „h4“

"// div [@ class = 'canvas- graph'] // a [@href = '/ accounting.html'] [i [@ class = 'icon-usd']] / following-sibling :: h4"

Предшественик : За да намерим елемент въз основа на родителския елемент, можем да използваме атрибут предшественик на XPath.

Нека разберем тези 3 функции, като използваме пример -

Тестови стъпки

Забележка: От датата на създаване на урока началната страница на Guru99 е актуализирана, така че вместо това използвайте демонстрационния сайт, за да стартирате тестове

  1. Отидете на http://demo.guru99.com/test/guru99home/
  2. В раздела „Няколко от най-популярните ни курсове“ потърсете във всички уеб елементи, които са събрат на WebElement, чийто текст е „SELENIUM“
  3. Ще намерим елемент с помощта на XPath текст съдържа, предшественик и функция на брат и сестра.

ИЗПОЛЗВАНЕ Съдържа и XPath Sibling

импортиране на java.util.List;импортиране на java.util.concurrent.TimeUnit;внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;внос org.openqa.selenium.WebElement;импортиране на org.openqa.selenium.firefox.FirefoxDriver;внос org.testng.annotations.Test;публичен клас SiblingAndParentInXpath {@Тестpublic void testSiblingAndParentInXpath () {Драйвер за WebDriver;String driverPath = "C: \\ geckodriver.exe";System.setProperty ("webdriver.gecko.driver", driverPath);драйвер = нов FirefoxDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Елемент за търсене в „Популярен курс“, който е събрат на контрола „SELENIUM“, Тук първо ще намерим h2, чийто текст е „Няколко от най-популярните ни курсове“, след което преминаваме към неговия родителски елемент, който е „ div ', вътре в този div ще намерим връзка, чийто текст е „SELENIUM“, след което най-накрая ще намерим всички събратящи елементи на тази връзка („SELENIUM“)Списък  dateBox = driver.findElements (By.xpath ("// h2 [съдържа (текст (), 'Няколко от най-популярните ни курсове')] / parent :: div // div [// a [текст () = 'SELENIUM']] / follow-sibling :: div [@ class = 'rt-grid-2 rt-omega'] "));// Отпечатваме всички съседни елементи на елемента, наречен като „SELENIUM“ в „Популярни курсове“за (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.close ();}}

Резултатът ще бъде като:

Предшественик в Selenium Webdriver

Предшественик в Selenium Webdriver е функция, използвана за намиране на предшественик на конкретен член в посочения слой. Нивото на предшественик, който трябва да бъде върнат, или ниво на предшественика спрямо нивото на члена може да бъде изрично посочено. Той връща брой йерархични стъпки от предшественика, като намира посочения предшественик, който потребителят иска.

Сега да предположим, че трябва да търсим всички елементи в раздела „Популярен курс“ с помощта на предшественик на котвата, чийто текст е „SELENIUM“

Тук нашата заявка xpath ще бъде като

"//div[.//a[text()='SELENIUM']]/ancestor::div[@class='rt-grid-2 rt-omega '] / following-sibling :: div"

Пълен код

импортиране на java.util.List;импортиране на java.util.concurrent.TimeUnit;внос org.openqa.selenium.By;внос org.openqa.selenium.Keys;импортиране на org.openqa.selenium.WebDriver;внос org.openqa.selenium.WebElement;импортиране на org.openqa.selenium.firefox.FirefoxDriver;внос org.testng.annotations.Test;публичен клас AncestorInXpath {@Тестpublic void testAncestorInXpath () {Драйвер за WebDriver = нов FirefoxDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Търсене във всички елементи в раздела „Популярен курс“// с помощта на предшественик на котвата, чийто текст е 'SELENIUM'Списък  dateBox = driver.findElements (By.xpath ("// div [.// a [text () = 'SELENIUM']] / предшественик :: div [@ class = 'rt-grid-2 rt- omega '] / след-брат / сестра :: div "));// Отпечатваме всички съседни елементи на елемента, наречен „SELENIUM“ в „Популярен курс“за (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.quit ();}}

Резултатът ще изглежда като-

Използване на И и ИЛИ

С помощта на И и ИЛИ можете да поставите 2 условия в нашия израз на XPath.

  • В случай на AND и двете условия трябва да са верни, тогава само той намира елемента.
  • В случай на ИЛИ някое от 2-те условия трябва да е вярно, тогава само то намира елемента.

Тук нашата XPath заявка ще бъде като

Xpath = // * [@ type = 'submit' OR @ name = 'btnReset']
Xpath = // вход [@ type = 'submit' и @ name = 'btnLogin']

Тестови стъпки:

  1. Отидете на http://demo.guru99.com/v1/
  2. В раздела ще използва горния демонстрационен сайт за търсене на елемент с различни функции на XPath.

Ще намерите елемент, използващ AND и OR, родителски оси, започващи с и XPath оси

И ИЛИ Пример

внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;внос org.openqa.selenium.WebElement;импортиране на org.openqa.selenium.chrome.ChromeDriver;публичен клас AND_OR {публична статична void main (String [] args) {Драйвер за WebDriver;WebElement w, x;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");драйвер = нов ChromeDriver ();// Стартиране на приложениетоdriver.get ("https://www.guru99.com/");// Търсене на елемент с помощта на ИЛИ в xpathw = driver.findElement (By.xpath ("// * [@ type = 'submit' OR @ name = 'btnReset']"));// Отпечатваме текста на елементаSystem.out.println (w.getText ());// Търсене на елемент с помощта на AND в xpathx = driver.findElement (By.xpath ("// вход [@ type = 'submit' и @ name = 'btnLogin']"));// Отпечатваме текста на търсения елементSystem.out.println (x.getText ());// Затворете браузъраdriver.quit ();}}

Какво е родител в селен?

Parent in Selenium е метод, използван за извличане на родителския възел на текущия възел, избран в уеб страницата. Много е полезно в ситуацията, когато изберете елемент и трябва да получите родителския елемент с помощта на Xpath. Този метод се използва и за получаване на родителя на родителя.

Тук нашата XPath заявка ще бъде като

Xpath = // * [@ id = 'rt-feature'] // родител :: div

XPath с помощта на родител

внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;внос org.openqa.selenium.WebElement;импортиране на org.openqa.selenium.chrome.ChromeDriver;публичен клас Родител {публична статична void main (String [] args) {Драйвер за WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");драйвер = нов ChromeDriver ();// Стартиране на приложениетоdriver.get ("https://www.guru99.com/");// Търсене на елемента с помощта на PARENTw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // родител :: div"));// Отпечатваме текста на търсения елементSystem.out.println (w.getText ());// Затворете браузъраdriver.quit ();}}

Започва с

Използвайки функцията „Започва с“, можете да намерите елемента, чийто атрибут се променя динамично при опресняване или други операции като щракване, изпращане и т.н.

Тук нашата XPath заявка ще бъде като

Xpath = // етикет [започва с (@ id, 'съобщение')]

внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;внос org.openqa.selenium.WebElement;импортиране на org.openqa.selenium.chrome.ChromeDriver;публичен клас StartsWith {публична статична void main (String [] args) {Драйвер за WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");драйвер = нов ChromeDriver ();// Стартиране на приложениетоdriver.get ("https://www.guru99.com/");// Търсене на елемента с помощта на start-withw = driver.findElement (By.xpath ("// етикет [започва-с (@ id, 'съобщение')]"));// Отпечатваме текста на търсения елементSystem.out.println (w.getText ());// Затворете браузъраdriver.quit ();}}

Оси Xpath

Използвайки оси XPath, можете да намерите динамичните и много сложни елементи на уеб страница. Осите XPath съдържат няколко метода за намиране на елемент. Тук ще обсъдим няколко метода.

следното : Тази функция ще върне непосредствения елемент на конкретния компонент.

Тук нашата XPath заявка ще бъде като

Xpath = // * [@ type = 'text'] // след :: вход

XPath, използвайки следното

внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;внос org.openqa.selenium.WebElement;импортиране на org.openqa.selenium.chrome.ChromeDriver;публичен клас Следва {публична статична void main (String [] args) {Драйвер за WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");драйвер = нов ChromeDriver ();// Стартиране на приложениетоdriver.get ("https://www.guru99.com/");// Търсене на елемента с помощта на следния методw = driver.findElement (By.xpath ("// * [@ type = 'text'] // след :: вход"));// Отпечатваме текста на търсения елементSystem.out.println (w.getText ());// Затворете браузъраdriver.quit ();}}

Предшестващо: Тази функция ще върне предходния елемент на конкретния елемент.

Тук нашата XPath заявка ще бъде като

Xpath = // * [@ type = 'submit'] // предшестващ :: вход

XPath с помощта на Preceding

внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;внос org.openqa.selenium.WebElement;импортиране на org.openqa.selenium.chrome.ChromeDriver;публичен клас Предшестващ {публична статична void main (String [] args) {Драйвер за WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");драйвер = нов ChromeDriver ();// Стартиране на приложениетоdriver.get ("https://www.guru99.com/");// Търсене на елемента с помощта на предходния методw = driver.findElement (By.xpath ("// * [@ type = 'submit'] // предходно :: input"));// Отпечатваме търсения елементSystem.out.println (w.getText ());// Затворете браузъраdriver.quit ();}}

г) низходящ: Тази функция ще върне низходящия елемент на конкретния елемент.

Тук нашата XPath заявка ще бъде като

Xpath = // * [@ id = 'rt-feature'] // низходящ :: a

XPath с помощта на Descendant

внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;внос org.openqa.selenium.WebElement;импортиране на org.openqa.selenium.chrome.ChromeDriver;обществен клас Потомък {публична статична void main (String [] args) {Драйвер за WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");драйвер = нов ChromeDriver ();// Стартиране на приложениетоdriver.get ("https://www.guru99.com/");// Търсене на елемента с помощта на низходящ методw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // низходящ :: a"));// Отпечатваме търсения елементSystem.out.println (w.getText ());// Затворете браузъраdriver.quit ();}}

Обобщение

  • Има някои ситуации, когато обикновен XPath не може да се използва за намиране на елемент. В такава ситуация се нуждаем от различни функции от заявката xpath.
  • Има някои важни XPath функции като XPath съдържа, родител, предци, братя и сестри и т.н.
  • С помощта на тези функции можете да създавате сложни XPath изрази.