Khi bạn nhấn bất kỳ phím nào trong danh sách thả xuống, nó sẽ đưa bạn đến tùy chọn nhưng không cho phép bạn tìm kiếm toàn bộ hoặc chuỗi cụ thể
Cần tìm kiếm trên danh sách khi có một danh sách dài các mặt hàng có sẵn
Mất thời gian để tìm tùy chọn bằng cách cuộn danh sách
Trong hướng dẫn này, tôi chỉ cho bạn cách tạo danh sách thả xuống với hộp tìm kiếm bằng cách sử dụng plugin select2 và đọc tùy chọn đã chọn
Bản trình diễn Tải xuống
nội dung
1. Tải xuống và đưa vào
- Tải xuống thư viện select2 từ GitHub
- Bao gồm
2 vàbeforeEach[[] => { cy.visit['index.html'] }] describe['HTML select element', [] => { context['single value', [] => { it['sets MA', [] => { // //on.cypress.io/select // set using value // Massachusetts cy.get['#my-state'].select['MA'] // confirm the selected value cy.get['#my-state'].should['have.value', 'MA'] }] }] }]
3 với thư viện jQuery trong phầnbeforeEach[[] => { cy.visit['index.html'] }] describe['HTML select element', [] => { context['single value', [] => { it['sets MA', [] => { // //on.cypress.io/select // set using value // Massachusetts cy.get['#my-state'].select['MA'] // confirm the selected value cy.get['#my-state'].should['have.value', 'MA'] }] }] }]
4beforeEach[[] => { cy.visit['index.html'] }] describe['HTML select element', [] => { context['single value', [] => { it['sets MA', [] => { // //on.cypress.io/select // set using value // Massachusetts cy.get['#my-state'].select['MA'] // confirm the selected value cy.get['#my-state'].should['have.value', 'MA'] }] }] }]
2. HTML
Tạo một phần tử thả xuống và thêm một số tùy chọn. Đồng thời tạo một nút để đọc tùy chọn thả xuống đã chọn và hiển thị chúng trong
beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
5Mã hoàn thành
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu
3. jQuery
Khởi tạo
beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
6 trên beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
7 và xác định sự kiện beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
8 trên nút để đọc văn bản và giá trị tùy chọn đã chọnHiển thị các giá trị trong
beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
5Mã hoàn thành
$[document].ready[function[]{ // Initialize select2 $["#selUser"].select2[]; // Read selected option $['#but_read'].click[function[]{ var username = $['#selUser option:selected'].text[]; var userid = $['#selUser'].val[]; $['#result'].html["id : " + userid + ", name : " + username]; }]; }];
4. Bản trình diễn
Xem bản trình diễn
5. Kết luận
Tôi hy vọng hướng dẫn này sẽ giúp bạn tạo phần tử thả xuống với hộp tìm kiếm bằng cách sử dụng plugin select2
Bài đăng trên blog này cho biết cách kiểm soát các phần tử HTML
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 gốc từ các bài kiểm tra Cypress. Chúng ta cũng sẽ xem xét cách làm việc với thư viện trình bao bọc rất phổ biến có tên là Select2, thư viện này thay thế các phần tử gốc it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 bằng một đánh dấu HTML bổ sungGhi chú. bạn có thể tìm thấy mã nguồn cho bài đăng này trong công thức
Phần tử chọn giá trị đơn
Hãy lấy một trang nơi người dùng chọn một trạng thái từ danh sách các lựa chọn. Có thể đó là bang quê hương của họ, hoặc bang mà họ muốn tránh xa nơi kẻ thù của họ sinh sống
Pick one state
Alaska
Hawaii
California
Nevada
...
Các trình duyệt hiện đại hiển thị
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 gốc khá tốt. Đây là Chrome 80 hiển thị danh sách các trạng thái được nhóm theo múi giờChúng tôi có thể đặt trạng thái đã chọn từ thử nghiệm Cypress bằng cách sử dụng. chọn lệnh
beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
Ghi chú. để bỏ qua việc lặp lại cùng một mã, các đoạn mã kiểm tra sau sẽ bỏ qua các khối
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
9 và
Pick several states
...
0bách lệnh. select cho phép một người chọn một tùy chọn bằng cách sử dụng giá trị hoặc nội dung văn bản của nó. Bài kiểm tra tiếp theo chọn tùy chọn có nội dung chữ "Massachusetts"
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
Chọn nhiều giá trị
HTML cho phép một phần tử
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 duy nhất có nhiều tùy chọn được chọn
Pick several states
...
Cách kiểm tra cũng giống như vậy - chúng ta chỉ cần cẩn thận khi kiểm tra giá trị đã chọn - chúng ta cần sử dụng đẳng thức sâu để so sánh hai mảng
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu3
Thử nghiệm hoạt động và chọn 3 trạng thái
Mẹo. lưu ý đường viền màu xanh xung quanh phần tử
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 sau khi kiểm tra xong. Phần tử vẫn có tiêu điểm của trình duyệt - điều này có thể làm bạn ngạc nhiên khi tương tác với Cypress GUI. Ví dụ: khi nhấn "r" để chạy lại các bài kiểm tra, thay vào đó, bạn sẽ thay đổi trạng thái thành "Rhode Island"Do đó, thử nghiệm cụ thể này sẽ rất tuyệt khi kết thúc bằng việc làm mờ phần tử
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu6
Giá trị đơn sử dụng Select2
Phần tử
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 tiêu chuẩn vẫn ổn, nhưng các thư viện trình bao bọc như Select2 làm cho nó thậm chí còn tốt hơn. Trước tiên, bạn cần tải thư viện jQuery và Select2 và khởi tạo tiện ích như thế nàySelect User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu8
"ứng dụng. js" tạo tiện ích HTML hiển thị thay cho phần tử
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6$[document].ready[function[]{ // Initialize select2 $["#selUser"].select2[]; // Read selected option $['#but_read'].click[function[]{ var username = $['#selUser option:selected'].text[]; var userid = $['#selUser'].val[]; $['#result'].html["id : " + userid + ", name : " + username]; }]; }];0
Đối với tôi, tiện ích Select2 trông đẹp hơn phần tử
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 có sẵn, ngoài ra tiện ích này có đầu vào tự động hoàn thành rất hữu íchNếu chúng ta viết một bài kiểm tra Cypress để đặt một giá trị đối với phần tử
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 được bọc bằng Select2. nó sẽ thất bại$[document].ready[function[]{ // Initialize select2 $["#selUser"].select2[]; // Read selected option $['#but_read'].click[function[]{ var username = $['#selUser option:selected'].text[]; var userid = $['#selUser'].val[]; $['#result'].html["id : " + userid + ", name : " + username]; }]; }];3
Khi Select2 tự hiển thị, nó sẽ ẩn phần tử
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 ban đầu, chỉ để lại một hình chữ nhật có độ phân giải pixel cao. Cypress kiểm tra xem phần tử có hiển thị hay không trước khi chọn giá trị và từ chối các phần tử hầu như không nhìn thấy đó vì người dùng không thể chọn phần tử theo cách nàyChúng tôi có thể buộc Cypress bỏ qua phần tích hợp sẵn của nó bằng cách sử dụng tùy chọn
Pick several states
...
9$[document].ready[function[]{ // Initialize select2 $["#selUser"].select2[]; // Read selected option $['#but_read'].click[function[]{ var username = $['#selUser option:selected'].text[]; var userid = $['#selUser'].val[]; $['#result'].html["id : " + userid + ", name : " + username]; }]; }];6
Chúng tôi có phần tử
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 với giá trị phù hợp - nhưng trình bao bọc HTML Select2 có hiển thị đúng tên của trạng thái không? Bạn có thể tìm thấy cùng một bộ chọn thậm chí nhanh hơn bằng cách sử dụng Cypress Selector Playground cố gắng chọn một phần tử hiển thị
Sau khi bạn nhấp vào nút "Sao chép", bạn có toàn bộ lệnh
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu31 trong khay nhớ tạm của mình - hãy dán nó vào bài kiểm tra của bạn và bắt đầu
beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
0Chọn một giá trị bằng cách gõ
Hãy chọn một tiểu bang bằng cách nhập một phần tên của nó. Đây là nơi biết đánh dấu HTML mà Select2 tạo ra là rất quan trọng để gửi đúng lệnh từ thử nghiệm. May mắn thay, chúng ta luôn có thể kiểm tra cấu trúc HTML bằng DevTools
Đầu tiên, lưu ý rằng người dùng phải nhấp vào tiện ích trước khi phần tử đầu vào xuất hiện
Hãy nhấp vào từ thử nghiệm của chúng tôi, nhưng chúng tôi không thể nhấp vào phần tử
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 ban đầu - thay vào đó, hãy nhấp vào phần tử HTML mà Select2 thêm vào trang. Chúng ta có thể sử dụng công cụ Cypress Selector Playground giống như trước để chọn bộ chọn và lệnh và sao chép dán chúng vào bài kiểm trabeforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
1Kiểm tra mở tiện ích đầu vào và chúng tôi có thể kiểm tra bộ chọn cho phần tử đầu vào để nhập vào
Chúng tôi có thể sao chép bộ chọn
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu33 được đề xuất bởi công cụ NHƯNG điều này rất mong manh. Lưu ý trong trường hợp này, bộ chọn không có bất kỳ thứ gì kết nối nó với phần tử
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu34 ban đầu. Nếu trang của chúng tôi có một số tiện ích Select2, lệnh
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu33 sẽ trả về tất cả các tiện ích này, vì Cypress từ chối nhập nhiều thành phần cùng một lúc
Trong những tình huống như thế này, bạn cần xem xét kỹ phần đánh dấu HTML để xem liệu có điều gì cụ thể liên kết tiện ích trở lại thành phần ban đầu của nó không
Lưu ý rằng tiện ích Select2 có một thuộc tính có một phần của tên gốc
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 - tên Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu37. Chúng ta có thể sử dụng thuộc tính này làm bộ chọn
beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
2Chúng tôi có thể mở rộng kiểm tra để xác nhận giá trị đã chọn và văn bản hiển thị là chính xác
beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
3Chỉ để hiển thị tiện ích đang hoạt động, bạn có thể trì hoãn việc nhập từng ký tự bằng cách sử dụng. gõ tùy chọn của lệnh
beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
4Nhiều giá trị sử dụng Select2
Hãy chuyển sang tình huống tiếp theo. khi tiện ích Select2 bao bọc một phần tử
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 cho phép chọn nhiều giá trị. Đánh dấu HTML it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 làbeforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
5Chúng tôi có thể đặt các giá trị trực tiếp trên phần tử
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu60 từ bài kiểm tra
beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
6Làm cách nào để xác nhận "viên thuốc" được hiển thị bởi tiện ích Select2 -
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu61,
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu62,
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu63 mà chúng tôi thấy ở đó?
Hãy mở bảng điều khiển DevTools và xem phần đánh dấu bằng bảng Thành phần
Phần tử ban đầu của chúng tôi
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu60 ngay sau đó là phần tử
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu65 chứa các mục danh sách với mọi trạng thái đã chọn. Bộ chọn kết hợp cho điều này sẽ là
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu66 - đầu tiên nó tìm thấy một phần tử có id
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu67, sau đó là phần tử tiếp theo [toán tử CSS
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu68] với lớp
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu69, sau đó bên trong một phần tử có lớp
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu80. Hãy viết bài kiểm tra của chúng tôi
beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
7Bài kiểm tra xác nhận rằng các tiểu bang New England này thực sự là những gì chúng tôi muốn chọn
Điều gì sẽ xảy ra nếu chúng ta muốn tìm trạng thái bằng cách nhập chứ không phải bằng cách đặt chúng theo giá trị? . Thử nghiệm trì hoãn mỗi ký tự 500 mili giây để rõ ràng
beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
8Đang xóa mục đã chọn
Điều gì xảy ra nếu người dùng chọn một vài mục, sau đó xóa một trong số chúng?
Mỗi mục Select2 có một khoảng với lớp
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu81. Đó là một câu nói hay, nhưng chúng ta có thể sử dụng nó để loại bỏ một mục khỏi bài kiểm tra
beforeEach[[] => {
cy.visit['index.html']
}]
describe['HTML select element', [] => {
context['single value', [] => {
it['sets MA', [] => {
// //on.cypress.io/select
// set using value
// Massachusetts
cy.get['#my-state'].select['MA']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
}]
}]
9Kiểm tra nhanh - chớp mắt và bạn sẽ bỏ lỡ - nhưng bạn vẫn có thể thấy trạng thái được thêm và xóa chính xác
kiểm soát theo chương trình
Select2 cho phép mã ứng dụng truy xuất các mục đã chọn theo chương trình. Ví dụ: bạn có thể lấy các mục hiện được chọn bằng cách gọi phương thức
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu69 với đối số
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu83
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
0Các bài kiểm tra Cypress có thể gọi trực tiếp phương thức này từ bài kiểm tra - vì bài kiểm tra chạy bên trong trình duyệt
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
1Sau khi kiểm tra kết thúc, hãy nhấp vào lệnh
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu84 để xem giá trị mang lại - đó là danh sách các trạng thái được chọn [với các thuộc tính bổ sung được thêm vào bởi mã Select2]
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu85
Từ mỗi đối tượng, hãy chọn các trường
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu86 và khẳng định rằng các trạng thái mong đợi đã được chọn. Gói Cypress Lodash cho phép chúng tôi ánh xạ từng đối tượng tới thuộc tính của nó một cách trang nhã
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
2Dữ liệu đã tìm nạp
Select2 cho phép tải các lựa chọn từ máy chủ từ xa bằng lệnh gọi Ajax. Đây là mã khởi tạo tìm nạp danh sách người dùng
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
3Thử nghiệm của chúng tôi nên cẩn thận để không giới hạn tìm kiếm phần tử trong danh sách lựa chọn trống ban đầu. Ví dụ: bài kiểm tra này SẼ KHÔNG hoạt động
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
4Thử nghiệm trên không thành công - mặc dù chúng tôi có thể thấy người dùng có tên mà chúng tôi đang tìm kiếm
Lý do thất bại được mô tả trong Hướng dẫn về khả năng thử lại của chúng tôi. Bằng cách tách lệnh
Select User Yogesh singh Sonarika Bhadoria Anil Singh Vishal Sahu Mayank Patidar Vijay Mourya Rakesh sahu87, bài kiểm tra "rơi" vào bẫy. Nó tìm thấy phần tử giữ chỗ đang tải và sau đó chỉ tìm kiếm phần đó của DOM, trong khi danh sách thực được tạo trong một phần tử DOM khác. Bạn có thể thấy vấn đề bằng cách di chuột qua nút "get. lệnh select2-results__option"
Có một số giải pháp cho vấn đề này, tất cả được hiển thị trong kho lưu trữ công thức nấu ăn ví dụ cây bách. Có lẽ cách đơn giản nhất là sử dụng một lệnh duy nhất để truy vấn phần tử bằng văn bản
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
5các cy. chứa lệnh thử lại cho đến khi Select2 tìm nạp và hiển thị danh sách các tùy chọn và một tùy chọn có văn bản "Leanne Graham" xuất hiện
kết luận
Nếu bạn đang làm việc với một thư viện bao bọc phần tử HTML gốc bằng một tiện ích con, giống như Select2, thì điều quan trọng là phải biết đánh dấu bổ sung. Thử nghiệm phải tương tác với đánh dấu mới để kiểm soát tiện ích và xác nhận tiện ích được kết nối chính xác. Trong bài đăng này, chúng tôi đã xem xét phần tử gốc
it['sets Massachusetts', [] => {
// //on.cypress.io/select
// set using text
// Massachusetts
cy.get['#my-state'].select['Massachusetts']
// confirm the selected value
cy.get['#my-state'].should['have.value', 'MA']
}]
6 và trình bao bọc Select2 của nó cũng như cách các bài kiểm tra đầu cuối của Cypress có thể hoạt động trong cả hai tình huống