Знайдіть елементи за текстом посилання & Текст часткового посилання в Selenium Webdriver

Зміст:

Anonim

Що таке текст посилання в селені?

Текстова посилання в Selenium використовується для ідентифікації гіперпосилання на веб - сторінці. Визначається за допомогою анкерної мітки. Для створення гіперпосилань на веб-сторінці ми можемо використовувати прив'язувальний тег, за яким йде посилання Текст.

Посилання, що відповідають критерію

Доступ до посилань можна отримати за допомогою точної або часткової відповідності тексту їх посилання. Наведені нижче приклади містять сценарії існування декількох збігів та пояснюють, як 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 {public static void main (String [] args) {Рядок baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер WebDriver = новий ChromeDriver ();драйвер.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 {public static void main (String [] args) {Рядок baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер WebDriver = новий ChromeDriver ();драйвер.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 ()", який буде отримувати доступ до цих двох посилань окремо, залежно від використання великих літер у символах. Див. Зразок коду нижче.

Код

public static void main (String [] args) {Рядок baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер WebDriver = новий ChromeDriver ();драйвер.get (baseUrl);Рядок 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 {public static void main (String [] args) {Рядок baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер WebDriver = новий ChromeDriver ();драйвер.get (baseUrl);driver.findElement (By.partialLinkText ("Inside")). click ();System.out.println (driver.getTitle ());driver.navigate (). back ();driver.findElement (By.partialLinkText ("Зовні")). 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 (), незалежно від того, знаходяться вони всередині або поза елементами рівня блоку.