Xác định vị trí các phần tử theo Text Link và Partial Link Text trong Selenium Webdriver

Một Text Link trong Selenium được sử dụng để xác định các siêu liên kết trên một trang web. Nó được xác định với sự trợ giúp của anchor tag. Để tạo các siêu liên kết trên một trang web, chúng ta có thể sử dụng một anchor tag theo sau là Text Link.

Liên kết phù hợp với tiêu chí

Các liên kết có thể được truy cập bằng cách sử dụng kết hợp chính xác hoặc Partial Text Link của chúng. Các ví dụ dưới đây cung cấp các tình huống trong đó nhiều kết quả trùng khớp sẽ tồn tại và sẽ giải thích cách WebDriver giải quyết chúng.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu các phương pháp có sẵn để tìm và truy cập các Liên kết bằng cách sử dụng Webdriver. Ngoài ra, chúng tôi sẽ thảo luận về một số vấn đề phổ biến gặp phải khi truy cập vào Liên kết và sẽ thảo luận thêm về cách giải quyết chúng.

Truy cập các liên kết bằng Exact Text Match : By.linkText ()

Việc truy cập các liên kết bằng Text Link chính xác của chúng được thực hiện thông qua phương thức By.linkText () . Tuy nhiên, nếu có hai liên kết có cùng Text Link, phương pháp này sẽ chỉ truy cập liên kết đầu tiên. Hãy xem xét codeHTML bên dưới

Khi bạn cố gắng chạy codeWebDriver bên dưới, bạn sẽ truy cập vào liên kết “nhấp vào đây” đầu tiên

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 = “http://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();

    }

}

Đây là cách nó làm việc-

Kết quả là bạn sẽ tự động được đưa đến Google.

Truy cập liên kết bằng Partial Text Match: By.partialLinkText ()

Việc truy cập các liên kết bằng cách sử dụng Partial Text Link của chúng được thực hiện bằng phương thức By.partialLinkText () . Nếu bạn chỉ định Partial Text Link có nhiều kết quả phù hợp, thì chỉ kết quả phù hợp đầu tiên mới được truy cập. Hãy xem xét codeHTML bên dưới.

Khi bạn thực thi codeWebDriver bên dưới, bạn vẫn sẽ được đưa đến Google.

Mã:

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 = “http://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();

    }

}

Vì vậy, làm thế nào để giải quyết vấn đề trên? Trong trường hợp có nhiều liên kết với cùng một Text Link và chúng ta muốn truy cập vào các liên kết khác với liên kết đầu tiên, chúng ta phải làm như thế nào?

Trong những trường hợp như vậy, nói chung, các Locator khác nhau … By.xpath (), By.cssSelector () hoặc By.tagName () được sử dụng.

Thường được sử dụng nhất là By.xpath (). Đây là một trong những đáng tin cậy nhất nhưng nó trông phức tạp và không thể đọc được.

Các tham số cho By.linkText ()By.partialLinkText () đều phân biệt chữ hoa chữ thường, nghĩa là viết hoa rất quan trọng. Ví dụ: trong trang chủ của Mercury Tours, có hai liên kết có chứa văn bản “egis” – một là liên kết “ĐĂNG KÝ” ở menu trên cùng và liên kết kia là liên kết “Đăng ký tại đây” ở phần dưới bên phải của trang.

Mặc dù cả hai liên kết đều chứa chuỗi ký tự “egis”, một là phương thức “By.partialLinkText ()” sẽ truy cập hai liên kết này riêng biệt tùy thuộc vào cách viết hoa của các ký tự. Xem codemẫu bên dưới.

public static void main(String[] args) {

        String baseUrl = “http://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();

    }

Liên kết bên ngoài và bên trong một khối

Tiêu chuẩn HTML5 mới nhất cho phép các thẻ <a> được đặt bên trong và bên ngoài các thẻ cấp khối như <div>, <p> hoặc <h3>. Phương thức “By.linkText ()” và “By.partialLinkText ()” có thể truy cập vào một liên kết nằm bên ngoài và bên trong các phần tử cấp khối này. Hãy xem xét codeHTML bên dưới.

codeWebDriver bên dưới truy cập cả hai liên kết này bằng phương thức 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 = “http://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();

        System.out.println(driver.getTitle());

        driver.quit();

    }

}

Kết quả ở trên xác nhận rằng cả hai liên kết đã được truy cập thành công vì tiêu đề trang tương ứng của chúng đã được truy xuất chính xác.

Tóm lược

  • Các liên kết được truy cập bằng phương thức click ().
  • Ngoài các Vị trí có sẵn cho bất kỳ WebElement nào, Liên kết cũng có các Vị trí dựa trên Text Link:
    • By.linkText () – Locator các liên kết dựa trên sự trùng khớp chính xác với văn bản của liên kết được cung cấp dưới dạng tham số.
    • By.partialLinkText () – Locator các liên kết dựa trên phần văn bản phù hợp với văn bản của liên kết.
  • Cả hai công cụ Locator trên đều có Phân biệt chữ hoa chữ thường.
  • Nếu có nhiều kết quả phù hợp, By.linkText () và By.partialLinkText () sẽ chỉ chọn kết quả phù hợp đầu tiên. Trong những trường hợp có nhiều liên kết với cùng một Text Link, các Locator khác dựa trên xpath, CSS sẽ được sử dụng.
  • Phương thức findElements () & By.tagName (“a”) tìm tất cả các phần tử trong trang phù hợp với tiêu chí Locator
  • Các liên kết có thể được truy cập bởi By.linkText () và By.partialLinkText () cho dù chúng là các phần tử cấp khối bên trong hay bên ngoài.
Back to top button