2014-05-08 23 views
21

Tôi viết bài kiểm tra cho trang web của tôi sử dụng Selenium IDE và tôi đang gặp khó khăn với việc selen nhấp chuột vào một nút sử dụng trước-siblingLàm thế nào để sử dụng XPath trước-sibling đúng

<td> 
<div class="btn-group"> 
<button class="btn btn btn-danger block" title="Warning, Delete" name="delete" type="button"> 
<button class="btn btn btn-default block" title="View History" name="history" type="button"> 
<button class="btn btn btn-default block" title="View Settings" name="settings" type="button"> 
<button class="btn btn btn-default block" name="device" type="button"> 
<span class="glyphicon glyphicon-pencil"/> 
Arcade Reader 
</button> 
</div> 
</td> 

con đường của tôi

xpath=//button[contains(.,'Arcade Reader')]/../preceding-sibling::button[@name='settings'] 

Trả lời

30

Bạn không cần phải đi cấp độ và sử dụng .. vì tất cả các nút trên cùng cấp:

//button[contains(.,'Arcade Reader')]/preceding-sibling::button[@name='settings'] 
1

tôi cũng muốn xây dựng định vị từ lên xuống dưới như:

//div[contains(@class,'btn-group')][./button[contains(.,'Arcade Reader')]]/button[@name='settings'] 

nó khá đơn giản, như chúng ta chỉ cần tìm kiếm btn-group với button[contains(.,'Arcade Reader')] và được nó button[@name='settings']

đó chỉ là một lựa chọn để xây dựng định vị xPath)

lợi nhuận của phần tử tìm kiếm trình bao bọc là gì: bạn có thể trả về bằng phương pháp (ví dụ trong java) và chỉ xây dựng các công trình selen như:

getGroupByName("Arcade Reader").find("button[name='settings']"); 
getGroupByName("Arcade Reader").find("button[name='delete']"); 

hoặc thậm chí đơn giản hóa thêm

getGroupButton("Arcade Reader", "delete").click(); 
Các vấn đề liên quan