Намерете елементи по текст на връзката & Текст на частична връзка в Selenium Webdriver

Какво представлява текстът на връзката в селен?

А текстът за връзка в Селен се използва за идентифициране на хипервръзки в уеб страница. Определя се с помощта на котва етикет. За създаване на хипервръзки на уеб страница, можем да използваме котва, следвана от връзката Текст.

Връзки, отговарящи на критерий

Връзките могат да бъдат достъпни чрез точно или частично съвпадение на техния текст на връзката. Примерите по-долу предоставят сценарии, при които ще съществуват множество съвпадения, и ще обяснят как WebDriver ще се справи с тях.

В този урок ще научим наличните методи за намиране и достъп до връзките чрез Webdriver. Също така, ние ще обсъдим някои от често срещаните проблеми, с които се сблъскваме при достъпа до връзки и ще обсъдим по-нататък как да ги разрешим.

Ето какво ще научите-

  • Достъп до връзки с помощта на точно съвпадение на текст: By.linkText ()
  • Достъп до връзки чрез частично съвпадение на текст: By.partialLinkText ()
  • Как да получите няколко връзки със същия текст на връзката
  • Чувствителност към малки и големи букви за Текст на връзката
  • Връзки отвън и отвътре в блок

Достъп до връзки с помощта на точно съвпадение на текст: By.linkText ()

Достъпът до връзки с помощта на техния точен текст на връзката става чрез метода By.linkText () . Ако обаче има две връзки, които имат един и същ текст на връзката, този метод ще има достъп само до първата. Помислете за HTML кода по-долу

Когато се опитате да стартирате кода на WebDriver по-долу, ще имате достъп до първата връзка "щракнете тук"

Код:

внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;импортиране на org.openqa.selenium.chrome.ChromeDriver;публичен клас MyClass {публична статична void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер за WebDriver = нов ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("кликнете тук")). click ();System.out.println ("заглавието на страницата е: + driver.getTitle ());driver.quit ();}}

Ето как работи-

В резултат на това автоматично ще бъдете отведени до Google.

Достъп до връзки чрез частично съвпадение на текст: By.partialLinkText ()

Достъпът до връзки с помощта на част от техния текст на връзката става чрез метода By.partialLinkText () . Ако посочите частичен текст на връзката, който има множество съвпадения, ще бъде осъществен достъп само до първото съвпадение. Помислете за HTML кода по-долу.

Когато изпълните кода на WebDriver по-долу, все пак ще бъдете отведени до Google.

Код:

внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;импортиране на org.openqa.selenium.chrome.ChromeDriver;публичен клас P1 {публична статична void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер за WebDriver = нов ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("тук")). click ();System.out.println ("Заглавието на страницата е: + driver.getTitle ());driver.quit ();}}

Как да получите няколко връзки със същия текст на връзката

И така, как да заобиколите горния проблем? В случаите, когато има множество връзки с един и същ текст на връзката и ние искаме да осъществим достъп до връзките, различни от първата, как да предприемем това?

В такива случаи обикновено се използват различни локатори, а именно ... By.xpath (), By.cssSelector () или By.tagName ().

Най-често използваният е By.xpath (). Той е най-надеждният, но изглежда сложен и нечетлив.

Чувствителност към малки и големи букви за Текст на връзката

Параметрите за By.linkText () и By.partialLinkText () са чувствителни към малки и големи букви, което означава, че главни букви имат значение. Например в началната страница на Mercury Tours има две връзки, които съдържат текста "egis" - едната е връзката "РЕГИСТРИРАНЕ", намираща се в горното меню, а другата е връзката "Регистрирайте се тук", намираща се в долната дясна част на страницата.

Въпреки че и двете връзки съдържат символната последователност "egis", едната е метода "By.partialLinkText ()" ще има достъп до тези две връзки поотделно в зависимост от изписването с главни букви на символите. Вижте примерния код по-долу.

Код

публична статична void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер за WebDriver = нов ChromeDriver ();driver.get (baseUrl);String theLinkText = driver.findElement (От.partialLinkText ("egis")).getText ();System.out.println (theLinkText);theLinkText = driver.findElement (От.partialLinkText ("EGIS")).getText ();System.out.println (theLinkText);driver.quit ();}

Връзки отвън и отвътре в блок

Най-новият стандарт HTML5 позволява маркерите да бъдат поставяни вътре и извън блоковите маркери като

,

или

. Методите "By.linkText ()" и "By.partialLinkText ()" могат да имат достъп до връзка, разположена извън и вътре в тези елементи на ниво блок. Помислете за HTML кода по-долу.

Кодът WebDriver по-долу осъществява достъп до двете връзки чрез метода By.partialLinkText ().

Код:

внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;импортиране на org.openqa.selenium.chrome.ChromeDriver;публичен клас MyClass {публична статична void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер за WebDriver = нов ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("Inside")). click ();System.out.println (driver.getTitle ());driver.navigate (). back ();driver.findElement (By.partialLinkText ("Outside")). click ();System.out.println (driver.getTitle ());driver.quit ();}}

Резултатът по-горе потвърждава, че и двете връзки са били достъпни успешно, защото съответните заглавия на страниците са били извлечени правилно.

Обобщение

  • Достъпът до връзките се извършва чрез метода click ().
  • Освен локаторите, достъпни за всеки WebElement, Връзките имат и базирани на текст на връзки локатори:
    • By.linkText () - намира връзките въз основа на точното съвпадение на текста на връзката, предоставен като параметър.
    • By.partialLinkText () - намира връзки въз основа на частичното съвпадение на текста на текста на връзката.
  • И двата горни локатора са чувствителни към регистъра.
  • Ако има множество съвпадения, By.linkText () и By.partialLinkText () ще изберат само първото съвпадение. В такива случаи, когато има множество връзки с един и същ текст на връзката, се използват други локатори, базирани на xpath, CSS.
  • findElements () & By.tagName ("a") метод намира всички елементи в страницата, отговарящи на критериите за локатор
  • Връзките могат да бъдат достъпни от By.linkText () и By.partialLinkText () независимо дали са вътре или извън елементи на ниво блок.

Интересни статии...