2015-06-04 24 views
8

Tôi cần phải tìm các yếu tố sau đây trên trang webLàm thế nào để chọn một yếu tố web bằng văn bản với Selenium WebDriver, Java

<div class="b-datalist__item__addr">[email protected]</div> 

tôi là mã hóa với Java cho Selenium WebDriver.
Cần bộ chọn CSS chính xác cho phần tử này để sử dụng nó với lệnh driver.findElement(By.cssSelector(the-selector).click.
div[class='b-datalist__item__addr'] bộ chọn không đủ tốt vì tôi phải tìm kiếm theo văn bản [email protected] không phải là liên kết nên tôi không thể sử dụng lệnh findElement(By.linkText()).

Trả lời

13

Css không cho phép bạn thực hiện tìm kiếm dựa trên văn bản. xpath là tùy chọn duy nhất tại đó.

//div[contains(text(),'[email protected]')] 
+1

Nó hoạt động, cảm ơn bạn! – Eliyahu

+0

Vui vì nó giúp bạn – Saifur

+0

là có cách nào để thêm tên lớp hoặc bất kỳ tham số bổ sung nào vào bộ chọn xpath ở trên không? – Eliyahu

1

contains(node, substring) có thể giải quyết được vấn đề, nhưng lưu ý rằng nếu có nhiều yếu tố có nội dung văn bản tương tự, ví dụ:

Predicate [contains(text(),'[email protected]')] sẽ phù hợp với tất cả chúng

Trong trường hợp này, tốt hơn nên sử dụng starts-with(node, substring):

//div[starts-with(text(),'[email protected]')] 

hoặc lấy yếu tố theo yêu cầu của nội dung văn bản chính xác:

//div[text()='[email protected]'] 
+0

Tôi biết điều này. Cảm ơn bạn. – Eliyahu

Các vấn đề liên quan