Текст ссылки и часть текста ссылки в Selenium

⚡ Умное резюме

Текст ссылки и часть текста ссылки в Selenium Метод By.linkText() определяет местоположение гиперссылок на веб-странице по их якорному тексту. Метод By.linkText() соответствует точному тексту, а By.partialLinkText() — части текста; оба метода чувствительны к регистру и возвращают первое найденное совпадение.

  • 🔗 Определение текста ссылки: Находит гиперссылки на странице по их видимому якорному тексту.
  • 🎯 By.linkText(): Находит точное совпадение с текстом ссылки и возвращает первое найденное совпадение.
  • 🔎 By.partialLinkText(): Сопоставляет часть текста ссылки, возвращая также первое совпадение.
  • 🔠 С учетом регистра: Оба слова в кодировке учитывают регистр букв, поэтому «egis» и «EGIS» различаются.
  • 🧱 Множественные/блокированные ссылки: Для поиска дубликатов используйте xpath или cssSelector; оба метода работают как внутри, так и вне блочных тегов.

Текст ссылки и часть текста ссылки в Selenium

Что такое текст ссылки Selenium?

A Текст ссылки в Selenium используется для идентификации гиперссылок на веб-странице. Определяется с помощью тега привязки. Для создания гиперссылок на веб-странице мы можем использовать тег привязки, за которым следует текст ссылки.

Ссылки, соответствующие критерию

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

В этом уроке мы изучим доступные методы поиска и доступа к ссылкам с помощью Webdriver. Кроме того, мы обсудим некоторые распространенные проблемы, возникающие при доступе к ссылкам, и обсудим, как их решить.

Полный текст ссылки в Selenium – По.linkText()

Доступ к ссылкам с использованием их точного текста осуществляется с помощью метода By.linkText().. Однако если есть две ссылки с одинаковым текстом, этот метод получит доступ только к первой. Рассмотрим HTML-код ниже

Текст ссылки в Selenium–By.LinkText()

Текст ссылки в Selenium–By.LinkText()

Когда вы попытаетесь запустить приведенный ниже код WebDriver, вы получите доступ к первой ссылке «нажмите здесь».

Текст ссылки в Selenium–By.LinkText()

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();
    }

}

Вот как это работает-

Текст ссылки в Selenium–By.LinkText()

В результате вы автоматически будете перенаправлены на Google.

Текст ссылки в Selenium–By.LinkText()

Полный текст частичной ссылки в Selenium – By.partialLinkText()

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

Частичный текст ссылки Selenium – By.partialLinkText()

 Частичный текст ссылки Selenium – By.partialLinkText()

При выполнении приведенного ниже кода WebDriver вы все равно будете перенаправлены на Google.

 Частичный текст ссылки Selenium – By.partialLinkText()

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();
    }
}

Частичный текст ссылки Selenium – By.partialLinkText()

Как получить несколько ссылок с одним и тем же текстом ссылки

Итак, как обойти вышеописанную проблему? Как нам поступить в случаях, когда имеется несколько ссылок с одинаковым текстом ссылки и мы хотим получить доступ к ссылкам, отличным от первой?

В таких случаях обычно используются разные локаторы, а именно… By.xpath(), By.cssSelector() или By.tagName().

Чаще всего используется By.xpath(). Это самый надежный вариант, но он выглядит сложным и нечитаемым.

Чувствительность к регистру для текста ссылки

Чувствительность к регистру для текста ссылки

Параметры для По.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();
    }
}

Вывод выше подтверждает, что обе ссылки были успешно доступны, поскольку соответствующие заголовки страниц были получены правильно.

Часто задаваемые вопросы (FAQ)

Метод By.linkText() находит полный, точный видимый текст ссылки, а метод By.partialLinkText() находит любую ссылку, содержащую заданную подстроку. Оба метода возвращают только первую совпадающую ссылку, если подходит несколько ссылок.

Да. И By.linkText(), и By.partialLinkText() чувствительны к регистру, поэтому регистр имеет значение. Текст «egis» и «EGIS» рассматриваются как разные значения и могут соответствовать разным ссылкам на одной странице.

Поскольку текстовые локаторы ссылок возвращают только первое совпадение, используйте By.xpath() или By.cssSelector() для выбора конкретной ссылки, или используйте findElements() с By.tagName("a"), чтобы собрать все ссылки и выбрать нужную.

Инструменты искусственного интеллекта анализируют DOM и ранжируют атрибуты по стабильности, чтобы предложить надежные селекторы XPath или CSS. Они отдают предпочтение уникальным, менее уязвимым идентификаторам, уменьшая количество ошибок, вызванных незначительными изменениями пользовательского интерфейса во время выполнения тестов.

Да. Самовосстанавливающиеся тестовые фреймворки используют ИИ для обнаружения сбоев в работе локатора, затем оценивают близлежащие элементы по сходству и автоматически переключаются на наиболее подходящий вариант.ping Тесты проводятся с минимальным ручным обслуживанием.

Подведем итог этой публикации следующим образом: