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.