Chọn2 nhận nhiều giá trị đã chọn

Bài đăng trên blog này cho thấy 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, 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ổ sung

Ghi 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ờ

Phần tử select trong Chrome 80

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


  ...
0

Kiểm tra đơn chọn Cypress đang hoạt động

bá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

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']
}]
0

Thử nghiệm hoạt động và chọn 3 trạng thái

Nhiều lựa chọn

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"

Nhấp vào "r" sau khi kiểm tra xong. chọn "Rhode Island" [và không ai muốn điều đó]

Vì vậy, 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']
}]
6

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']
}]
3
Tiêu điểm bị xóa khỏi phần tử được chọn

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 là ok, 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ày

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']
}]
5

"ứ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

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']
}]
7

Đố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 ích

Select2 tiện ích giá trị đơn

Nế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


  Pick one state


  
    Alaska
    Hawaii
  
  
    California
    Nevada
    ...
0
Thử nghiệm không thành công vì mã đánh dấu Select2 bao gồm phần tử

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ày

The HTML markup shows why Cypress refuses to act on the original element

Chú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


  Pick one state


  
    Alaska
    Hawaii
  
  
    California
    Nevada
    ...
3
Thử nghiệm buộc phần tử phải chọn một giá trị

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?

Tìm phần tử bằng bảng DevTools Elements

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ị

Chọn phần tử bằng công cụ Cypress Selector Playground

Sau khi bạn nhấp vào nút "Sao chép", bạn có toàn bộ lệ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']
}]
01 trong khay nhớ tạm của mình - hãy dán lệnh đó 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']
    }]
  }]
}]
0
Xác nhận văn bản được hiển thị bởi tiện ích Select2

Chọn một giá trị bằng cách gõ

Hãy chọn một trạng thái 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

Người dùng lần đầu nhấp vào tiện ích Select2

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 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']
    }]
  }]
}]
1

Kiể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

Bộ chọn cho phần tử đầu vào được tạo bởi tiện ích Select2

Chúng tôi có thể sao chép bộ chọ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']
}]
03 đượ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ử
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']
}]
04 ban đầu. Nếu trang của chúng tôi có một số tiện ích Select2, lệ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']
}]
03 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

Kiểm tra đánh dấu HTML Select2

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
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']
}]
07. 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']
    }]
  }]
}]
2
Đang nhập phần tử đã chọn

Chú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']
    }]
  }]
}]
3

Chỉ để 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']
    }]
  }]
}]
4
cy. gõ chậm sau mỗi ký tự

Nhiề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']
    }]
  }]
}]
5

Chúng tôi có thể đặt các giá trị trực tiếp trê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']
}]
30 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']
    }]
  }]
}]
6
Thử nghiệm chọn nhiều giá trị

Làm cách nào để chúng tôi xác nhận "viên thuốc" được hiển thị bởi tiện ích Select2 -

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']
}]
31,
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']
}]
32,
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']
}]
33 mà chúng tôi thấy ở đó?

Selector Playground đề xuất bộ chọn cho từng phần tử

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

Markup for element is followed by Select2 widget

Phần tử ban đầu của chúng tô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']
}]
30 ngay sau đó là 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']
}]
35 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à
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']
}]
36 - đầu tiên, nó tìm thấy một phần tử có id
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']
}]
37, sau đó là phần tử tiếp theo [toán tử CSS
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']
}]
38] với lớp
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']
}]
39, sau đó bên trong một phần tử có lớp
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']
}]
50. 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']
    }]
  }]
}]
7

Bà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

Ba trạng thái được 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
Nhập nhiều trạng thái và xác nhận lựa chọn

Đ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?

Xóa đánh dấu mục

Mỗi mục Select2 có một khoảng với lớp

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']
}]
51. Đó 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']
    }]
  }]
}]
9

Kiể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

Xóa một trong các lựa chọn bằng cách nhấp vào kiểm tra

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

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']
}]
39 với đối số
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']
}]
53

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']
}]
0

Cá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']
}]
1

Sau khi kiểm tra kết thúc, hãy nhấp vào lệ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']
}]
54 để 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]

Các mục đã chọn được trả về bởi cuộc gọ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']
}]
55

Từ mỗi đối tượng, hãy chọn các trườ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']
}]
56 và xác nhận 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']
}]
2
Yêu cầu Select2 cho các mục đã chọn và xác nhận danh sách tên tiểu bang

Dữ 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']
}]
3

Thử 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']
}]
4

Thử 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

Kiểm tra không thành công mặc dù hiển thị đúng tên người dùng trong danh sách

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

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']
}]
57, 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"

lệnh get hiển thị phần tử chúng tôi đang tìm kiếm

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']
}]
5

cá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

Làm cách nào để nhận các giá trị đã chọn trong select2?

Có hai cách để truy cập dữ liệu lựa chọn hiện tại theo chương trình. sử dụng. select2['data'] hoặc bằng cách sử dụng bộ chọn jQuery .

Làm cách nào để đặt giá trị đã chọn trong menu thả xuống MultiSelect bằng JavaScript?

Giải pháp JavaScript ES6 thuần túy .
Nắm bắt mọi tùy chọn bằng hàm querySelectorAll và phân tách chuỗi giá trị
Sử dụng Array#forEach để lặp lại mọi phần tử từ mảng giá trị
Sử dụng Array#find để tìm tùy chọn khớp với giá trị đã cho
Đặt thuộc tính đã chọn của nó thành true

Làm cách nào để đặt giá trị đã chọn trong trình đơn thả xuống MultiSelect bằng jQuery?

Add ` $["#"].refresh[];` – Nouphal.M. Jan 4, 2014 at 4:56..
add $["#"].multiselect["refresh"]; – Dharmang. Jan 4, 2014 at 4:57..
$["#"].multiselect["refresh"]; – Sridhar R. .. .
@Nouphal. m. Nó hiển thị lỗi. .
@ user3085495 lỗi gì?

Select2 thiết lập giá trị như thế nào?

Tôi có một mã select2 đơn giản lấy dữ liệu từ AJAX. $["#programid"]. select2[{ placeholder. "Chọn một chương trình", allowClear. đúng, độ dài đầu vào tối thiểu. 3, ajax. { url. "ajax.

Chủ Đề