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 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
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
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-
Kết quả là, bạn sẽ tự động được chuyển đến Google.
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.
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.
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(); } }
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
Các tham số cho By.linkText() và 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.
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.
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.
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().
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.


.png)
.png)

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

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