Để hiểu tiện ích mở rộng, trước tiên chúng ta hãy hiểu ba trụ cột của IDE selen
- Hành động: Thao tác bạn đang thực hiện trên Màn hình giao diện người dùng
- Người đánh giá / Xác nhận: Việc xác minh bạn thực hiện đối với dữ liệu bạn nhận được từ giao diện người dùng
- Chiến lược định vị: Làm cách nào chúng tôi có thể tìm thấy phần tử trong giao diện người dùng.
Giờ đây, Selenium IDE có một thư viện rất trưởng thành với nhiều Chiến lược Hành động, Xác nhận / Người đánh giá và Định vị.
Nhưng đôi khi chúng ta cần thêm một số chức năng vào nó cho các yêu cầu dự án của chúng ta. Trong tình huống đó, chúng tôi có thể mở rộng thư viện này bằng cách thêm các tiện ích mở rộng tùy chỉnh của chúng tôi. Các tiện ích mở rộng tùy chỉnh này được gọi là 'Tiện ích mở rộng người dùng'.
Ví dụ: chúng ta cần một Hành động có thể chuyển văn bản thành chữ hoa trước khi điền nó vào một phần tử web. Bạn không thể tìm thấy Hành động này trong thư viện Hành động mặc định. Trong trường hợp này, bạn có thể tạo 'Tiện ích mở rộng người dùng' của riêng mình. Trong hướng dẫn này, chúng ta sẽ học cách tạo tiện ích mở rộng người dùng để chuyển Văn bản thành Chữ hoa
Yêu cầu để tạo tiện ích mở rộng người dùng Selenium:
Để tạo tiện ích mở rộng người dùng cho Selenium IDE, chúng ta cần biết khái niệm cơ bản về JavaScript và khái niệm đối tượng nguyên mẫu Java Script.
Để tạo tiện ích mở rộng người dùng của mình, bạn cần tạo các phương thức tập lệnh Java và thêm chúng vào nguyên mẫu đối tượng selen và nguyên mẫu đối tượng PageBot.
Làm thế nào để Selenium IDE nhận ra Tiện ích mở rộng người dùng?
Sau khi thêm Tiện ích mở rộng người dùng vào Selenium IDE khi chúng tôi khởi động Selenium IDE, tất cả các tiện ích mở rộng này trong nguyên mẫu javascript sẽ được tải và Selenium IDE nhận dạng chúng theo tên của chúng.
Cách tạo tiện ích mở rộng người dùng
Bước 1) Hành động - tất cả các hành động được bắt đầu bởi "do", tức là nếu hành động dành cho văn bản chữ hoa hơn tên của nó sẽ là doTextUpperCase. Khi chúng ta thêm phương thức hành động này trong Selenium IDE, bản thân Selenium IDE sẽ tạo một phương thức chờ cho hành động này. Vì vậy, trong trường hợp này khi chúng ta tạo hành động doTextUpperCase , Selenium IDE sẽ tạo một hàm chờ tương ứng là TextUpperCaseAndWait . Nó có thể chấp nhận hai tham số
Ví dụ: Hành động văn bản chữ hoa
Selenium.prototype.doTextUpperCase = function (locator, text) {// Ở đây findElement tự nó có khả năng xử lý tất cả các loại định vị (xpath, css, name, id, className), Chúng ta chỉ cần truyền văn bản định vịvar element = this.page (). findElement (định vị);// Tạo văn bản để nhậptext = text.toUpperCase ();// Thay thế văn bản phần tử bằng văn bản mớithis.page (). ReplaceText (phần tử, văn bản);}
Bước 2) Người đánh giá / Xác nhận- Tất cả người đánh giá đã đăng ký trong nguyên mẫu đối tượng selen sẽ được đặt trước
bởi "get" hoặc "là" Ex. getValueFromCompoundTable, isValueFromCompoundTable. Nó có thể chấp nhận hai tham số, một cho mục tiêu và một cho trường giá trị trong trường hợp thử nghiệm.
Đối với mỗi Người đánh giá, sẽ có các chức năng xác minh tương ứng được đặt tiền tố bằng "verify", "khẳng định" và chức năng chờ có tiền tố là "waitFor"
Ví dụ: Đối với người đánh giá văn bản chữ hoa
Selenium.prototype.assertTextUpperCase = function (locator, text) {// Tất cả các chiến lược định vị được tự động xử lý bởi "findElement"var element = this.page (). findElement (định vị);// Tạo văn bản để xác minhtext = text.toUpperCase ();// Nhận giá trị phần tử thực tếvar realValue = element.value;// Đảm bảo giá trị thực khớp với giá trị mong đợiAssert.matches (giá trị mong đợi, giá trị thực tế);}Selenium.prototype.isTextEqual = function (locator, text) {trả về this.getText (định vị) .value === văn bản;}Selenium.prototype.getTextValue = function (locator, text) {trả về this.getText (định vị) .value;}
Bước 3) Chiến lược định vị- Nếu chúng ta muốn tạo chức năng của riêng mình để định vị một phần tử thì
chúng ta cần mở rộng nguyên mẫu PageBot với một hàm có tiền tố "định vịElementBy."
Nó sẽ có hai tham số, đầu tiên sẽ là chuỗi định vị và thứ hai sẽ là tài liệu
nơi nó cần được tìm kiếm.
Ví dụ: Đối với bộ định vị văn bản chữ hoa
// "InDocument" là tài liệu bạn đang tìm kiếm.PageBot.prototype.locateElementByUpperCase = function (text, inDocument) {// Tạo văn bản để tìm kiếmvar dự kiếnValue = text.toUpperCase ();// Lặp qua tất cả các phần tử, tìm kiếm những phần tử có// một giá trị === giá trị mong đợi của chúng tôivar allElements = inDocument.getElementsByTagName ("*");// Dấu sao '*' này là một loại biểu thức chính quy nó sẽ đi qua mọi phần tử (trong HTML DOM mọi phần tử chắc chắn có tên thẻ như , ,,