2011-01-06 28 views
19
WebElement body = browser.findElement(By.xpath("//body")); 

body.findElement(By.xpath("")); // I want to get all child elements 
           // inside body, but nothing deeper. 

Tài liệu ví dụ.Nhận tất cả trẻ em ngay lập tức và không có gì sâu hơn

<html> 
    <body> 
    <div> 
    </div> 
    <span> 
     <table> 
     </table> 
    </span> 
    </body> 
</html> 

Kết quả mong đợi là divspan. Tôi không có quyền kiểm soát các tài liệu và chúng thay đổi rất nhiều.

Trả lời

23

("*") cung cấp tất cả các phần tử con của nút ngữ cảnh. Vì vậy, sử dụng:

body.findElement(By.xpath("*")); 
+1

Ok. Đang xóa nhận xét ... –

6
/html/body/* 

Sẽ chỉ chọn các phần tử con ngay lập tức body.

Hãy nhớ rằng nếu bạn sao chép tất cả các nút đã chọn này, bạn cũng sao chép nội dung của chúng. Vì vậy, nếu bạn làm copy-of, table cũng sẽ được tạo ra cho tài liệu kết quả.

Ngoài ra, tôi khuyên bạn nên đọc ít nhất các khái niệm cơ bản về XPath, bạn đặt quá nhiều câu hỏi tương tự.

+0

+1 Câu trả lời đúng. Bạn đã viết: * nodeset sẽ chứa các phần tử con của chúng cũng *. Điều này là sai hoặc không rõ ràng suy nghĩ của bạn. Tôi nghĩ rằng bạn có thể loại bỏ điều đó mà không bị mất. –

+0

@Alejandro, vâng, đó không phải là một công thức tốt, không thể từ này đúng cách. Bạn sẽ nói như thế nào? – Flack

+1

Có thể bạn muốn nói điều gì đó như: * Hãy nhớ rằng nếu bạn sao chép tất cả các nút đã chọn này, bạn cũng đang sao chép nội dung của chúng. * –

4

Dưới đây là một cách khác để có được những con trực tiếp của một phần tử:

element.findElement(By.xpath("./*")); 
Các vấn đề liên quan