Текст на връзката и частичен текст на връзката Selenium
В какво е текстът на връзката Selenium?
A Текст на връзката в Selenium се използва за идентифициране на хипервръзките на уеб страница. Определя се с помощта на anchor tag. За създаване на хипервръзки на уеб страница можем да използваме anchor таг, последван от връзката Text.
Връзки, отговарящи на критерий
Връзките могат да бъдат достъпни чрез точно или частично съвпадение на техния текст на връзката. Примерите по-долу предоставят сценарии, при които ще съществуват множество съвпадения, и обясняват как WebDriver ще се справи с тях.
В този урок ще научим наличните методи за намиране и достъп до връзките с помощта на Webdriver. Освен това ще обсъдим някои от често срещаните проблеми, с които се сблъскваме при достъпа до Връзки, и допълнително ще обсъдим как да ги разрешим.
Пълен текст на връзката в Selenium – By.linkText()
Достъпът до връзки с помощта на точния им текст на връзката се извършва чрез метода By.linkText().. Въпреки това, ако има две връзки, които имат същия текст на връзката, този метод ще има достъп само до първата. Разгледайте HTML кода по-долу
Когато се опитате да стартирате кода на WebDriver по-долу, ще получите достъп до първата връзка „щракнете тук“.
Код:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class MyClass {
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/link.html";
System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get(baseUrl);
driver.findElement(By.linkText("click here")).click();
System.out.println("title of page is: " + driver.getTitle());
driver.quit();
}
}
Ето как работи -
В резултат на това автоматично ще бъдете отведени до Google.
Пълен частичен текст на връзката в Selenium – By.partialLinkText()
Достъпът до връзки с помощта на част от техния текст на връзката се извършва с помощта на By.partialLinkText() метод. Ако посочите частичен текст на връзката, който има множество съвпадения, само първото съвпадение ще бъде достъпно. Разгледайте HTML кода по-долу.
Когато изпълните кода на WebDriver по-долу, пак ще бъдете отведени до Google.
Код:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class P1 {
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/accessing-link.html";
System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get(baseUrl);
driver.findElement(By.partialLinkText("here")).click();
System.out.println("Title of page is: " + driver.getTitle());
driver.quit();
}
}
Как да получите множество връзки с един и същ текст на връзката
И така, как да заобиколите горния проблем? В случаите, когато има няколко връзки с един и същ текст на връзката и искаме да имаме достъп до връзките, различни от първата, как да го направим?
В такива случаи обикновено се използват различни локатори, а именно... By.xpath(), By.cssSelector() или By.tagName().
Най-често се използва By.xpath(). Той е най-надеждният, но изглежда сложен и нечетлив.
Чувствителност към главни и малки букви за текст на връзката
Параметрите за By.linkText() намлява By.partialLinkText() и двете са чувствителни към малки и големи букви, което означава, че главните букви са от значение. Например в Mercury На началната страница на Tours има две връзки, които съдържат текста „egis“ – едната е връзката „РЕГИСТРИРАНЕ“, намираща се в горното меню, а другата е връзката „Регистрирайте се тук“, намираща се в долната дясна част на страницата.
Въпреки че и двете връзки съдържат последователността от знаци „egis“, едната е, че методът „By.partialLinkText()“ ще има достъп до тези две връзки отделно в зависимост от главните букви на знаците. Вижте примерния код по-долу.
код
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/newtours/";
System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get(baseUrl);
String theLinkText = driver.findElement(By
.partialLinkText("egis"))
.getText();
System.out.println(theLinkText);
theLinkText = driver.findElement(By
.partialLinkText("EGIS"))
.getText();
System.out.println(theLinkText);
driver.quit();
}
Връзки извън и вътре в блок
Най-новият стандарт HTML5 позволява етикетите да се поставят вътре и извън тагове на ниво блок като , или . Методите “By.linkText()” и “By.partialLinkText()” имат достъп до връзка, разположена извън и вътре в тези елементи на ниво блок. Разгледайте HTML кода по-долу.
Кодът на WebDriver по-долу осъществява достъп до двете връзки чрез метода By.partialLinkText().
Код:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class MyClass {
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/block.html";
System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
WebDriver driver = new 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();
}
}
Резултатът по-горе потвърждава, че и двете връзки са били осъществени успешно, тъй като заглавията на съответните им страници са били извлечени правилно.
Oбобщение
- Връзките са достъпни с помощта на метода click().
- Освен локаторите, налични за всеки WebElement, връзките също имат локатори, базирани на текст на връзката:
- By.linkText() – намира връзките въз основа на точното съвпадение на текста на връзката, предоставен като параметър.
- By.partialLinkText() – намира връзки въз основа на частично съвпадение на текста на връзката.
- И двата горни локатора са чувствителни към главни и малки букви.
- Ако има множество съвпадения, By.linkText() и By.partialLinkText() ще изберат само първото съвпадение. В такива случаи, когато има множество връзки с един и същ текст на връзката, се използват други локатори, базирани на xpath, CSS.
- методът findElements() & By.tagName(“a”) намира всички елементи в страницата, отговарящи на критериите на локатора
- Връзките могат да бъдат достъпни чрез By.linkText() и By.partialLinkText() независимо дали са вътре или извън елементите на ниво блок.


.png)
.png)

.png)
.png)
.png)
.png)
.png)

.png)
.png)
.png)
.png)
.png)