tôi mã hóa một số Perl để sử dụng XPath để xác định vị trí một td
yếu tố cụ thể trong một table` trông tương tự như saubiểu thức XPath để chứa yếu tố của một node văn bản cho
<table>
<tr>
<td>...</td>
<td><font color="white" face="verdana, Helvetica, Arial" size="2">Showing <b>1</b>-<b>100</b> of <b>200</b> total</font></td>
<td>...</td>
<td>...</td>
</tr>
</table>
Những gì tôi muốn là để tìm một td
phần tử có nút font/text()
chứa chuỗi Showing
.
trận contains(., "Showing")
Một so sánh trực tiếp hoạt động tốt:
//td[font/text()="Showing "]
nhưng tôi muốn sử dụng chức năng XPath để trận đấu là linh hoạt hơn.
Tôi đã thử
//td[contains(font/text(), "Showing ")]
nhưng điều này làm tăng lỗi
XPath failed due to: A sequence of more than one item is not allowed as the first argument of contains()
và tôi đã cố gắng để đạt được những gì tôi muốn với
//td[font/text()[contains(., "Showing")]]
nhưng điều này là rất xấu xí và tôi đang hy vọng cho một cái gì đó ngắn gọn hơn. Xin vui lòng ai đó có thể cải thiện điều này cho tôi, hoặc có lẽ xác nhận rằng đây là cách tốt nhất và súc tích nhất?
ngắn gọn hơn? Bạn có một xpath nói rằng "Tất cả' td 'có một' font' có văn bản chứa 'Hiển thị'" - đó chính xác là câu lệnh vấn đề của bạn! - và bạn muốn nó ngắn gọn hơn? – AakashM
@AakashM: Đúng vậy. Chỉ vì nó là * một * cách để thể hiện những gì tôi muốn không có nghĩa là nó * sạch nhất *. Tôi không phải viết '//td[font/text()[.="Showing"]] 'vì vậy tôi nghĩ rằng có thể có một cách sử dụng' contains' thay vì '='. – Borodin
Vậy tại sao bạn lại nghĩ rằng cụm từ "rất xấu xí"? Nó là cái tôi sẽ sử dụng - và điều này có nghĩa là ít nhất là với kiến thức của tôi, không có một thứ gì tao nhã hơn. –