2009-12-15 42 views
10

Tôi đang tìm cách viết truy vấn XPath để trả về ID phần tử đầy đủ từ một phần ID mà tôi đã tạo. Có ai biết làm thế nào tôi có thể làm điều này? Từ HTML sau đây (tôi đã cắt giảm xuống để xóa nội dung cụ thể của công việc) Tôi đang tìm cách trích xuất f41_txtResponse từ việc đặt f41_txt vào truy vấn của tôi.XPath Tìm ID phần tử HTML đầy đủ từ một phần ID

<input id="f41_txtResponse" class="GTTextField BGLQSTextField2 txtResponse" value="asdasdadfgasdfg" name="f41_txtResponse" title="" tabindex="21"/> 

Cheers

+0

ý của bạn là gì với "ID phần tử đầy đủ"? bạn có thể cung cấp một ví dụ? –

Trả lời

8

Nhờ Thomas Jung tôi đã có thể con số này ra. Nếu tôi sử dụng:

//*[contains(./@id, 'f41_txt')]/@id 

Điều này sẽ chỉ trả lại ID mà tôi đang tìm kiếm.

+6

Hãy lưu ý rằng điều này có thể không thành công. Bạn có thể muốn sử dụng '// * [starts-with (@id, 'f41_txt')]/@ id' để thay thế. – Tomalak

22

Bạn có thể sử dụng chứa để chọn các yếu tố:

//*[contains(@id, 'f41_txt')] 
+0

Với cách chúng tôi đang tạo trang web, việc này sẽ truy xuất mọi thứ mà tôi chỉ đang tìm ID phần tử. – user228178

+0

// * [contains (@id, 'f41_txt')] sẽ chọn danh sách các thẻ bạn phải lặp qua nó và chọn thuộc tính id cho mỗi thẻ. Bạn có thể sử dụng count (// * [contains (@id, 'f41_txt')]) để lấy tổng số. –

+0

Đó không phải là cách tốt nhất để làm điều này. Tôi đã trả lời câu hỏi của riêng tôi mặc dù với sự giúp đỡ của bạn trả lời. – user228178

0

Tôi khuyên bạn không nên sử dụng các số từ Id, khi bạn đang soạn xpath bằng cách sử dụng id một phần. Những con số này lặp lại các yếu tố DINAMIC. Và các yếu tố dinamic thay đổi trong các lần triển khai/phát hành tiếp theo trong hệ thống dưới thử nghiệm. Việc đổ vào là để xác định các yếu tố độc đáo. Sử dụng này có thể là một lựa chọn tốt hơn hoặc một cái gì đó như thế này, yo có ý tưởng: // input [chứa (@ id, '_txtResponse')]/@ id

-1

Nó làm việc cho tôi như dưới đây

//*[contains(./@id, 'f41_txt')] 
Các vấn đề liên quan