2015-06-25 20 views
8

các ứng dụng thử nghiệm gặp sự cố khác. Tôi cần phải nhấp vào phần tử bằng văn bản chính xác, vì vậy tôi tìm thấy một giải pháp mà tôi sử dụng cssContainingText và mỗi, sau đó nếu statment to comapre text và chọn phần tử nào đó, nhưng tôi nghĩ có lẽ là giải pháp tốt hơn cho điều đó?thước đo góc: Cách tìm phần tử bằng văn bản chính xác?

câu hỏi thứ hai: ở đâu đó trên stackoverflow Tôi đọc mà

element.click().then(){ 
dosomething; 
}); 

sẽ gây ra điều đó 'DoSomething;' sẽ thực hiện sau khi nhấp chuột, tôi thử điều này và nó không hoạt động, làm thế nào để làm cho điều đó 'dosomething;' sẽ thực hiện sau khi nhấp chuột;

Trả lời

16

Bạn có thể sử dụng by.xpath như một selector:

Bằng văn bản chính xác

element(by.xpath('.//*[.="text"]')) 

By lớp css với văn bản chính xác

element(by.xpath('.//*[.="text" and class="some-css-class"]')) 

Bạn có thể tìm thấy rất nhiều ví dụ về xpath online. Bạn cũng có thể sử dụng số tester.

+0

giải pháp cho tôi kết quả tương tự như tôi có, Nếu tôi có phần tử có tên như button1 và button12, nó sẽ tìm thấy button1 và button12. Tôi muốn tìm phần tử bằng văn bản chính xác nhưng chỉ có một – tealang

+0

Nó sẽ hoạt động. Xin vui lòng gửi html của bạn và chọn –

+0

tôi không biết rằng bạn hiểu tôi một cách chính xác. ví dụ. Tôi có hai nút với văn bản: button1 và button12. Nếu tôi viết phần tử (by.xpath ('.//*[.= "button1"]')) Tôi chỉ muốn tìm button1 – tealang

4

1) Delian có câu trả lời chính xác, nhưng trong nhiều trường hợp nội dung phần tử có khoảng trắng thêm, vì vậy bạn cần phải cắt chúng:

getElementsByText: function (text, parentXpathSelector) { 
    parentXpathSelector = parentXpathSelector || '//'; 
    return element(by.xpath(parentXpathSelector + '*[normalize-space(text())="' + text + '"]')); 
} 

2) https://stackoverflow.com/a/21785088/3147680

0

XPath là thanh lịch nhưng không dễ dàng để để đọc nếu người khác cần xem mã. Tôi thường chọn một phần tử trong bộ lặp bằng cách chỉ sử dụng cssContainingText và chuỗi by.css. ví dụ: element(by.css('.dropdown-menu')).element(by.cssContainingText('span', constants.STATUS.PENDING)).click(); chắc chắn nó có thể chậm hơn xpath. Tôi thực sự không phải bây giờ. Nhưng có thể quản lý trước tiên là

+1

Hoạt động tốt trừ khi bạn có nhiều mục và một là chuỗi con của một mục khác. 'cssContainingText' sẽ khớp cả hai. – Stiggler

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