Đôi khi chúng ta cần truy cập các phần tử (thường là văn bản) nằm trong bảng HTML. Tuy nhiên, rất hiếm khi nhà thiết kế web cung cấp thuộc tính id hoặc name cho một ô nhất định trong bảng. Do đó, chúng ta không thể sử dụng các phương thức thông thường như "By.id ()", "By.name ()", hoặc "By.cssSelector ()". Trong trường hợp này, tùy chọn đáng tin cậy nhất là truy cập chúng bằng phương thức "By.xpath ()".
Trong Hướng dẫn này, bạn sẽ học-
Cách viết XPath cho Bảng
Truy cập các bảng lồng nhau
Sử dụng thuộc tính làm dự đoán
Phím tắt: Sử dụng Kiểm tra Phần tử để Truy cập Bảng trong Selenium
Cách viết XPath cho Bảng
Hãy xem xét mã HTML bên dưới.
Chúng tôi sẽ sử dụng XPath để lấy văn bản bên trong của ô chứa văn bản "ô thứ tư".
Bước 1 - Đặt Phần tử gốc (bảng)
Các trình định vị XPath trong WebDriver luôn bắt đầu bằng dấu gạch chéo kép "//" và sau đó là phần tử mẹ . Vì chúng ta đang xử lý các bảng, phần tử mẹ phải luôn là thẻ
. Do đó, phần đầu tiên của bộ định vị XPath của chúng tôi phải bắt đầu bằng "// table".
Bước 2 - Thêm các phần tử con
Phần tử ngay dưới
là
nên chúng ta có thể nói rằng
là "con" của
. Và ngoài ra,
là "cha" của
. Tất cả các phần tử con trong XPath được đặt ở bên phải phần tử mẹ của chúng, được phân tách bằng một dấu gạch chéo "/" như đoạn mã được hiển thị bên dưới.
Bước 3 - Thêm dự đoán
Phần tử
chứa hai thẻ
. Bây giờ chúng ta có thể nói rằng hai thẻ
này là "con" của
. Do đó, chúng ta có thể nói rằng
là cha của cả hai phần tử
.
Một điều khác mà chúng ta có thể kết luận là hai phần tử
là anh em ruột. Anh chị em chỉ các phần tử con có cùng cha mẹ .
Để truy cập vào
mà chúng ta muốn truy cập (ô có văn bản "ô thứ tư"), trước tiên chúng ta phải truy cập vào
thứ hai chứ không phải ô đầu tiên. Nếu chúng ta chỉ viết "// table / tbody / tr", thì chúng ta sẽ truy cập thẻ
đầu tiên.
Vì vậy, làm thế nào để chúng ta truy cập
thứ hai sau đó? Câu trả lời cho điều này là sử dụng Predicates .
Dự đoán là các số hoặc thuộc tính HTML được đặt trong một cặp dấu ngoặc vuông "[]" để phân biệt một phần tử con với các phần tử con của nó . Vì
chúng ta cần truy cập là cái thứ hai, chúng ta sẽ sử dụng "[2]" làm vị ngữ.
Nếu chúng ta không sử dụng bất kỳ vị từ nào, XPath sẽ truy cập vào vị từ đầu tiên. Do đó, chúng ta có thể truy cập
đầu tiên bằng một trong hai mã XPath này.
Bước 4 - Thêm các yếu tố con thành công bằng cách sử dụng các dự đoán thích hợp
Phần tử tiếp theo chúng ta cần truy cập là
thứ hai. Áp dụng các nguyên tắc chúng ta đã học được từ bước 2 và 3, chúng ta sẽ hoàn thiện mã XPath của mình giống như hình bên dưới.
Bây giờ chúng ta đã có bộ định vị XPath chính xác, chúng ta đã có thể truy cập vào ô mà chúng ta muốn và lấy văn bản bên trong của nó bằng cách sử dụng mã bên dưới. Nó giả định rằng bạn đã lưu mã HTML ở trên dưới dạng "newhtml.html" trong Ổ C của mình.
public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";Trình điều khiển WebDriver = mới FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (By.xpath ("// table / tbody / tr [2] / td [2]")). GetText ();System.out.println (innerText);driver.quit ();}}
Truy cập các bảng lồng nhau
Các nguyên tắc tương tự đã thảo luận ở trên áp dụng cho các bảng lồng nhau. Bảng lồng nhau là các bảng nằm trong một bảng khác . Một ví dụ đã được biểu diễn ở dưới.
Để truy cập ô có văn bản "4-5-6" bằng cách sử dụng "// parent / child" và các khái niệm vị từ trong phần trước, chúng ta có thể tìm ra mã XPath bên dưới.
Mã WebDriver bên dưới có thể truy xuất văn bản bên trong của ô mà chúng ta đang truy cập.
Kết quả bên dưới xác nhận rằng bảng bên trong đã được truy cập thành công.
Sử dụng thuộc tính làm dự đoán
Nếu phần tử được viết sâu bên trong mã HTML để số lượng sử dụng cho vị từ rất khó xác định, chúng ta có thể sử dụng thuộc tính duy nhất của phần tử đó để thay thế.
Trong ví dụ dưới đây, ô "New York đến Chicago" nằm sâu trong mã HTML của trang chủ Mercury Tours.
Trong trường hợp này, chúng ta có thể sử dụng thuộc tính duy nhất của bảng (width = "270") làm vị từ. Các thuộc tính được sử dụng làm vị từ bằng cách đặt tiền tố chúng bằng ký hiệu @ . Trong ví dụ trên, ô "New York to Chicago" nằm ở
đầu tiên của
thứ tư, và vì vậy XPath của chúng ta sẽ như hình dưới đây.
Hãy nhớ rằng khi chúng ta đặt mã XPath trong Java, chúng ta nên sử dụng dấu gạch chéo ngược của ký tự thoát "\" cho dấu ngoặc kép ở cả hai bên của "270" để đối số chuỗi của By.xpath () sẽ không bị kết thúc sớm .
Bây giờ chúng tôi đã sẵn sàng truy cập vào ô đó bằng mã bên dưới.
By.xpath () thường được sử dụng để truy cập các phần tử của bảng.
Nếu phần tử được viết sâu bên trong mã HTML để số lượng sử dụng cho vị từ rất khó xác định, chúng ta có thể sử dụng thuộc tính duy nhất của phần tử đó để thay thế.
Các thuộc tính được sử dụng làm vị từ bằng cách đặt tiền tố chúng bằng ký hiệu @.
Sử dụng Kiểm tra Phần tử để Truy cập Bảng trong Selenium