2013-03-03 33 views
5

Tôi đang cố gắng điều hướng qua một trang web với xpath và tôi sắp đưa ra một số kết quả hỗn hợp. Đây là những gì tôi đang sử dụng:Selenium WebElement xpath Java

driver.findElement(By.xpath("//div[contains(@class, 'x-grid3-cell-inner x-grid3-col-0')]")); 

Đó thực sự hoạt động tốt nhưng vấn đề tôi đang chạy vào này này:

<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92300</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92475</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92476</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92301</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92474</div> 

Khi tôi chạy xpath rằng trong thử nghiệm Selenium của tôi, tôi luôn nhận được sự div đầu tiên . Làm thế nào để chỉnh sửa xpath của tôi để lấy div thứ 4 (92301) hoặc một số div khác không phải là cái đầu tiên trong danh sách?

Trả lời

8

Sử dụng XPath (//div[contains(@class, 'x-grid3-cell-inner x-grid3-col-0')])[4] này để nhận 4 thdiv.

Để tìm div chứa 92301 văn bản, sử dụng XPath này:

//div[contains(text(), '92301')] 
+0

Cảm ơn bạn, Kirill! Điều đó hoạt động tốt nhưng đôi khi người dùng chèn dữ liệu trước hoặc sau những gì tôi đang tìm kiếm có thể thay đổi vị trí. Có cách nào khác để tìm div với 92301 nếu một số div mới đã được viết trước nó? – cbohannon

+0

@ user2055841, tôi đã cập nhật câu trả lời của mình. –

3

bạn có thể sử dụng một trong hai WebElement.findElements():

driver.findElements(By.xpath(...)).get(3) 

hoặc sửa đổi xpath tới:

driver.findElement(By.xpath("(//div[contains(@class, 'x-grid3-cell-inner x-grid3-col-0')])[4]")); 
+0

Cảm ơn, mantrid. Đó là siêu hữu ích. Nó cho tôi những gì tôi đang sau. Tôi cũng sẽ tiếp tục tìm kiếm một cách năng động hơn để làm điều này như những gì tôi sau khi có thể không phải lúc nào cũng ở vị trí thứ 4. – cbohannon

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