Văn bản liên kết và một phần văn bản liên kết trong Selenium

⚡ Tóm tắt thông minh

Văn bản liên kết và một phần văn bản liên kết trong Selenium Tìm các siêu liên kết trên một trang web thông qua văn bản neo của chúng. Phương thức By.linkText() khớp với toàn bộ văn bản, trong khi By.partialLinkText() khớp với một phần văn bản, và cả hai bộ định vị đều phân biệt chữ hoa chữ thường và trả về kết quả khớp đầu tiên.

  • 🔗 Văn bản liên kết đã được định nghĩa: Tìm các siêu liên kết trên trang dựa trên văn bản neo hiển thị của chúng.
  • 🎯 By.linkText(): Tìm kiếm chính xác văn bản liên kết và trả về kết quả khớp đầu tiên.
  • 🔎 By.partialLinkText(): Tìm kiếm khớp một phần văn bản của liên kết, đồng thời trả về kết quả khớp đầu tiên.
  • 🔠 Phân biệt chữ hoa chữ thường: Cả hai hệ thống định vị đều coi việc viết hoa là quan trọng, vì vậy “egis” và “EGIS” khác nhau.
  • 🧱 Liên kết đa khối/liên kết nhóm: Để tìm các phần tử trùng lặp, hãy sử dụng xpath hoặc cssSelector; cả hai phương pháp đều hoạt động bên trong hoặc bên ngoài thẻ khối.

Văn bản liên kết và một phần văn bản liên kết trong Selenium

Văn bản liên kết trong là gì Selenium?

A Liên kết văn bản 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 thẻ neo. Để tạo các siêu liên kết trên một trang web, chúng ta có thể sử dụng thẻ liên kết theo sau là Văn bản liên kết.

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 quả khớp chính xác hoặc một phần văn bản liên kết của chúng. Các ví dụ bên dưới cung cấp các tình huống trong đó có nhiều kết quả trùng khớp và sẽ giải thích cách WebDriver xử lý 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 Liên kết bằng Webdriver. Ngoài ra, chúng ta sẽ thảo luận về một số vấn đề thường gặp khi truy cập Liên kết và sẽ thảo luận thêm về cách giải quyết chúng.

Hoàn thành văn bản liên kết trong Selenium – By.linkText()

Việc truy cập các liên kết bằng văn bản liên kết 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ó văn bản liên kết giống nhau thì phương pháp này sẽ chỉ truy cập vào liên kết đầu tiên. Hãy xem xét mã HTML bên dưới

Liên kết văn bản trong Selenium–By.LinkText()

Liên kết văn bản trong Selenium–By.LinkText()

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

Liên kết văn bản trong Selenium–By.LinkText()

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

}

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

Liên kết văn bản trong Selenium–By.LinkText()

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

Liên kết văn bản trong Selenium–By.LinkText()

Hoàn thành văn bản liên kết một phần trong Selenium – By.partialLinkText()

Việc truy cập các liên kết bằng cách sử dụng một phần văn bản liên kết của chúng được thực hiện bằng cách sử dụng By.partialLinkText() phương pháp. Nếu bạn chỉ định một văn bản liên kết một phần 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 mã HTML bên dưới.

Văn bản liên kết một phần trong Selenium – By.partialLinkText()

 Văn bản liên kết một phần trong Selenium – By.partialLinkText()

Khi bạn thực thi đoạn mã WebDriver bên dưới, bạn vẫn sẽ được chuyển đến trang Google.

 Văn bản liên kết một phần trong Selenium – By.partialLinkText()

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

Văn bản liên kết một phần trong Selenium – By.partialLinkText()

Cách nhận được nhiều liên kết với cùng một văn bản liên kết

Vậy làm cách nào để giải quyết vấn đề trên? Trong trường hợp có nhiều liên kết có cùng văn bản liên kết và chúng tôi muốn truy cập các liên kết khác với liên kết đầu tiên, chúng tôi sẽ thực hiện như thế nào?

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

Được sử dụng phổ biến nhất là By.xpath(). Đây là phương pháp đáng tin cậy nhất nhưng trông có vẻ phức tạp và khó đọc.

Phân biệt chữ hoa chữ thường cho văn bản liên kết

Phân biệt chữ hoa chữ thường cho văn bản liên kết

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

Phân biệt chữ hoa chữ thường cho văn bản liên kết

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

Phân biệt chữ hoa chữ thường cho văn bản liên kết

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

    }

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ẻ được đặt bên trong và bên ngoài các thẻ cấp khối như , hoặc . Các 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 mã HTML bên dưới.

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

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

Mã WebDriver bên dưới truy cập cả hai liên kết này bằng phương thức By.partialLinkText().

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

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

Kết quả ở trên xác nhận rằng cả hai liên kết đều đượ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.

Câu Hỏi Thường Gặp

By.linkText() khớp với toàn bộ văn bản hiển thị chính xác của một liên kết, trong khi By.partialLinkText() khớp với bất kỳ liên kết nào chứa một chuỗi con nhất định. Cả hai đều chỉ trả về liên kết khớp đầu tiên khi có nhiều liên kết thỏa mãn điều kiện.

Đúng vậy. Cả By.linkText() và By.partialLinkText() đều phân biệt chữ hoa chữ thường, vì vậy chữ hoa và chữ thường rất quan trọng. Văn bản “egis” và “EGIS” được coi là các giá trị khác nhau và có thể khớp với các liên kết khác nhau trên cùng một trang.

Vì bộ định vị văn bản liên kết chỉ trả về kết quả khớp đầu tiên, hãy sử dụng By.xpath() hoặc By.cssSelector() để nhắm mục tiêu vào một liên kết cụ thể, hoặc sử dụng findElements() với By.tagName(“a”) để thu thập tất cả các liên kết và chọn liên kết bạn cần.

Các công cụ AI phân tích DOM và xếp hạng các thuộc tính theo độ ổn định để đề xuất các bộ chọn XPath hoặc CSS mạnh mẽ. Chúng ưu tiên các định danh duy nhất, ít dễ bị lỗi hơn, giảm thiểu các sự cố do những thay đổi nhỏ về giao diện người dùng trong quá trình thực thi kiểm thử.

Đúng vậy. Các khung kiểm thử tự phục hồi sử dụng trí tuệ nhân tạo để phát hiện khi bộ định vị gặp lỗi, sau đó chấm điểm các phần tử lân cận dựa trên độ tương đồng và tự động chuyển sang phần tử phù hợp nhất, giữ cho quá trình này tiếp tục diễn ra suôn sẻ.ping Các bài kiểm tra được thực hiện với ít thao tác bảo trì thủ công hơn.

Tóm tắt bài viết này với: