Thước đo góc - APIS lõi
Chương này cho phép bạn hiểu các API cốt lõi khác nhau là chìa khóa cho hoạt động của thước đo góc.
Tầm quan trọng của API thước đo góc
Protractor cung cấp cho chúng tôi một loạt các API rất quan trọng để thực hiện các hành động sau để có được trạng thái hiện tại của trang web -
- Lấy các phần tử DOM của trang web mà chúng tôi sẽ kiểm tra.
- Tương tác với các phần tử DOM.
- Chỉ định hành động cho họ.
- Chia sẻ thông tin cho họ.
Để thực hiện các tác vụ trên, điều rất quan trọng là phải hiểu các API thước đo.
Các API thước đo góc khác nhau
Như chúng ta biết rằng Protractor là một trình bao bọc xung quanh Selenium-WebDriver, là các ràng buộc WebDriver cho Node.js. Thước đo góc có các API sau:
Trình duyệt
Nó là một trình bao bọc xung quanh một phiên bản của WebDriver được sử dụng để xử lý các lệnh cấp trình duyệt như điều hướng, thông tin trên toàn trang, v.v. Ví dụ, phương thức browser.get tải một trang.
Thành phần
Nó được sử dụng để tìm kiếm và tương tác với phần tử DOM trên trang mà chúng tôi đang thử nghiệm. Với mục đích này, nó yêu cầu một tham số để định vị phần tử.
Người định vị (bởi)
Nó là một tập hợp các chiến lược định vị phần tử. Các phần tử, ví dụ, có thể được tìm thấy bằng bộ chọn CSS, bằng ID hoặc bất kỳ thuộc tính nào khác mà chúng được liên kết với ng-model.
Tiếp theo, chúng ta sẽ thảo luận chi tiết về các API này và chức năng của chúng.
API trình duyệt
Như đã thảo luận ở trên, nó là một trình bao bọc xung quanh một phiên bản của WebDriver để xử lý các lệnh cấp trình duyệt. Nó thực hiện các chức năng khác nhau như sau:
Chức năng và mô tả của chúng
Các chức năng của API ProtractorBrowser như sau−
browser.angularAppRoot
Chức năng này của API trình duyệt đặt bộ chọn CSS cho một phần tử mà chúng ta sẽ tìm Angular. Thông thường, hàm này nằm trong 'body', nhưng trong trường hợp nếu ng-app của chúng ta, nó nằm trên một phần phụ của trang; nó cũng có thể là một yếu tố phụ.
browser.waitForAngularEnabled
Chức năng này của API trình duyệt có thể được đặt thành true hoặc false. Như tên cho thấy, nếu chức năng này được đặt là false thì Protractor sẽ không đợi các tác vụ Angular $ http và $ timeout hoàn thành trước khi tương tác với trình duyệt. Chúng ta cũng có thể đọc trạng thái hiện tại mà không cần thay đổi nó bằng cách gọi waitForAngularEnabled () mà không cần chuyển một giá trị.
browser.getProcessedConfig
Với sự trợ giúp của hàm API của trình duyệt này, chúng tôi có thể nhận được đối tượng cấu hình đã xử lý, bao gồm đặc điểm kỹ thuật và khả năng, hiện đang được chạy.
browser.forkNewDriverInstance
Như tên cho thấy, chức năng này sẽ phân nhánh một phiên bản trình duyệt khác để được sử dụng trong các bài kiểm tra tương tác. Nó có thể được chạy với luồng điều khiển được bật và tắt. Ví dụ được đưa ra dưới đây cho cả hai trường hợp -
Example 1
Đang chạy browser.forkNewDriverInstance() có bật luồng điều khiển -
var fork = browser.forkNewDriverInstance();
fork.get(‘page1’);
Example 2
Đang chạy browser.forkNewDriverInstance() đã tắt luồng điều khiển -
var fork = await browser.forkNewDriverInstance().ready;
await forked.get(‘page1’);
browser.restart
Như tên cho thấy, nó sẽ khởi động lại trình duyệt bằng cách đóng phiên bản trình duyệt và tạo một phiên bản mới. Nó cũng có thể chạy với luồng điều khiển được bật và tắt. Ví dụ được đưa ra dưới đây cho cả hai trường hợp -
Example 1 - Đang chạy browser.restart() có bật luồng điều khiển -
browser.get(‘page1’);
browser.restart();
browser.get(‘page2’);
Example 2 - Đang chạy browser.forkNewDriverInstance() đã tắt luồng điều khiển -
await browser.get(‘page1’);
await browser.restart();
await browser.get(‘page2’);
browser.restartSync
Nó tương tự như hàm browser.restart (). Sự khác biệt duy nhất là nó trả về phiên bản trình duyệt mới trực tiếp thay vì trả về một lời hứa giải quyết cho phiên bản trình duyệt mới. Nó chỉ có thể chạy khi luồng điều khiển được bật.
Example - Đang chạy browser.restartSync() có bật luồng điều khiển -
browser.get(‘page1’);
browser.restartSync();
browser.get(‘page2’);
browser.useAllAngular2AppRoots
Như tên cho thấy, nó chỉ tương thích với Angular2. Nó sẽ tìm kiếm thông qua tất cả các ứng dụng góc cạnh có sẵn trên trang trong khi tìm kiếm các yếu tố hoặc chờ đợi sự ổn định.
browser.waitForAngular
Hàm API của trình duyệt này hướng dẫn WebDriver đợi cho đến khi Angular kết xuất xong và không có lệnh gọi $ http hoặc $ timeout nào chưa xử lý trước khi tiếp tục.
browser.findElement
Như tên cho thấy, hàm API của trình duyệt này đợi Angular hoàn thành việc hiển thị trước khi tìm kiếm phần tử.
browser.isElementPresent
Như tên cho thấy, hàm API của trình duyệt này sẽ kiểm tra xem phần tử có hiển thị trên trang hay không.
browser.addMockModule
Nó sẽ thêm một mô-đun để tải trước Angular mỗi khi phương thức Protractor.get được gọi.
Example
browser.addMockModule('modName', function() {
angular.module('modName', []).value('foo', 'bar');
});
browser.clearMockModules
không giống như browser.addMockModule, nó sẽ xóa danh sách các mô-đun giả đã đăng ký.
browser.removeMockModule
Như tên cho thấy, nó sẽ loại bỏ một mô-đun giả đăng ký. Ví dụ: browser.removeMockModule ('modName');
browser.getRegisteredMockModules
Ngược lại với browser.clearMockModule, nó sẽ nhận được danh sách các mô-đun giả đã đăng ký.
browser.get
Chúng ta có thể sử dụng browser.get () để điều hướng trình duyệt đến một địa chỉ web cụ thể và tải các mô-đun giả cho trang đó trước khi tải Angular.
Example
browser.get(url);
browser.get('http://localhost:3000');
// This will navigate to the localhost:3000 and will load mock module if needed
browser.refresh
Như tên cho thấy, điều này sẽ tải lại trang hiện tại và tải các mô-đun giả trước Angular.
browser.navigate
Như tên cho thấy, nó được sử dụng để trộn các phương thức điều hướng trở lại đối tượng điều hướng để chúng được gọi như trước. Ví dụ: driver.navigate (). Refresh ().
browser.setLocation
Nó được sử dụng để duyệt đến một trang khác bằng cách sử dụng điều hướng trong trang.
Example
browser.get('url/ABC');
browser.setLocation('DEF');
expect(browser.getCurrentUrl())
.toBe('url/DEF');
Nó sẽ điều hướng từ ABC đến trang DEF.
browser.debugger
Như tên cho thấy, điều này phải được sử dụng với gỡ lỗi thước đo góc. Chức năng này về cơ bản thêm một tác vụ vào luồng điều khiển để tạm dừng kiểm tra và đưa các chức năng trợ giúp vào trình duyệt để việc gỡ lỗi có thể được thực hiện trong bảng điều khiển của trình duyệt.
browser.pause
Nó được sử dụng để gỡ lỗi các bài kiểm tra WebDriver. Chúng ta có thể sử dụngbrowser.pause() trong thử nghiệm của chúng tôi để nhập trình gỡ lỗi thước đo góc từ điểm đó trong luồng điều khiển.
Example
element(by.id('foo')).click();
browser.pause();
// Execution will stop before the next click action.
element(by.id('bar')).click();
browser.controlFlowEnabled
Nó được sử dụng để xác định xem luồng điều khiển có được bật hay không.