2012-01-15 32 views
24

Tôi có 2 nút Hủy và nút Tiếp theo trên cùng một trang nhưng nó chỉ có một id (xem mã bên dưới). Tôi muốn nhấn Next nhưng mỗi khi nó xác định nút hủy chỉ không nút Next. Làm thế nào để giải quyết vấn đề này?Làm thế nào để bấm/bấm nút bằng Selenium nếu nút không có Id?

<td align="center"> 
    <input type="button" id="cancelButton" value="Cancel" title="cancel" class="Submit_Button" style="background-color: rgb(0, 0, 160);"> 
    <input type="submit" value="Next" title="next" class="Submit_Button"> 
</td> 
+2

Bạn đang sử dụng cái gì? Selenium RC hoặc WebDriver (Selenium 2)? Bạn đang sử dụng ngôn ngữ nào? Java? C#? Python? hay cái gì? –

Trả lời

15

Trong Selenium IDE bạn có thể làm:

 
Command | clickAndWait 
Target | //input[@value='Next' and @title='next'] 

Nó sẽ làm việc tốt.

+0

Tuyệt vời ... nó đang hoạt động .. :) – ChanGan

18

Sử dụng xpath chọn (ở đây nhanh chóng tutorial) thay vì id:

#python: 
from selenium.webdriver import Firefox 

YOUR_PAGE_URL = 'http://mypage.com/' 
NEXT_BUTTON_XPATH = '//input[@type="submit" and @title="next"]' 

browser = Firefox() 
browser.get(YOUR_PAGE_URL) 

button = browser.find_element_by_xpath(NEXT_BUTTON_XPATH) 
button.click() 

Hoặc, nếu bạn sử dụng "vanilla" Selenium, chỉ cần sử dụng cùng một selector xpath thay vì nút id:

NEXT_BUTTON_XPATH = '//input[@type="submit" and @title="next"]' 
selenium.click(NEXT_BUTTON_XPATH) 
1

Bạn không cần chỉ sử dụng số nhận dạng làm định vị phần tử. Bạn có thể sử dụng một vài cách để tìm một phần tử. Đọc this article và chọn điều tốt nhất cho bạn.

+0

Liên kết này không giải quyết được vấn đề của tôi .. – ChanGan

+0

Nhưng sau khi đọc, bạn nên biết phải làm gì, khi phần tử không có thuộc tính 'id'. – faramka

0

Bạn có thể sử dụng xpath để xác định phần tử đó.

+0

nếu tôi sử dụng xpath đó, luôn luôn nhấn hủy thay vì Tiếp theo .. – ChanGan

+0

Bạn đã sử dụng xPath nào và nó không hoạt động? – faramka

2

Đối với nút Tiếp theo, bạn có thể sử dụng xpath hoặc cssSelector như sau:

xpath cho nút Next: // input [@ value = 'Next']

cssPath cho nút Next: input [value = Tiếp theo ]

3

sử dụng văn bản và các thuộc tính giá trị thay vì id

driver.findElementByXpath("//input[@value='cancel'][@title='cancel']").click(); 

tương tự cho Next.

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