Текст посилання та частковий текст посилання в Selenium
⚡ Розумний підсумок
Текст посилання та частковий текст посилання в Selenium знаходить гіперпосилання на веб-сторінці за їхнім текстом прив'язки. Метод By.linkText() знаходить точний текст, тоді як By.partialLinkText() знаходить його частину, і обидва локатори враховують регістр і повертають перший збіг.

У чому текст посилання Selenium?
A Текст посилання в Selenium використовується для ідентифікації гіперпосилань на веб-сторінці. Визначається за допомогою анкерного тега. Для створення гіперпосилань на веб-сторінці ми можемо використовувати тег прив’язки, за яким слідує текст посилання.
Посилання, що відповідають критерію
Посилання можна отримати за допомогою точного або часткового збігу тексту посилання. У наведених нижче прикладах наведено сценарії, коли може існувати кілька збігів, і пояснюється, як WebDriver справлятиметься з ними.
У цьому посібнику ми дізнаємося про доступні методи пошуку та доступу до посилань за допомогою Webdriver. Крім того, ми обговоримо деякі типові проблеми, з якими стикаємося під час доступу до Links, і далі обговоримо, як їх вирішити.
Повний текст посилання в Selenium – By.linkText()
Доступ до посилань за допомогою їх точного тексту здійснюється за допомогою методу By.linkText().. Однак якщо є два посилання з однаковим текстом посилання, цей метод матиме доступ лише до першого. Розгляньте наведений нижче HTML-код
Коли ви спробуєте запустити код WebDriver нижче, ви отримаєте доступ за першим посиланням «клацніть тут».
Code:
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.
Code:
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()» звертатиметься до цих двох посилань окремо залежно від написання символів з великих літер. Дивіться приклад коду нижче.
Code
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().
Code:
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(); } }
Вихідні дані вище підтверджують, що обидва посилання були успішно перейшли, оскільки їх відповідні заголовки сторінок були отримані правильно.


.png)
.png)

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

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