Thước đo góc - Thước đo góc và Máy chủ Selenium

Như đã thảo luận trước đó, Protractor là một khung thử nghiệm mã nguồn mở, end-to-end dành cho các ứng dụng Angular và AngularJS. Đó là chương trình Node.js. Mặt khác, Selenium là một khung tự động hóa trình duyệt bao gồm Máy chủ Selenium, các API WebDriver và trình điều khiển trình duyệt WebDriver.

Thước đo góc với Selenium

Nếu chúng ta nói về sự kết hợp của Protractor và Selenium, thì Protractor có thể làm việc với máy chủ Selenium để cung cấp cơ sở hạ tầng kiểm tra tự động. Cơ sở hạ tầng có thể mô phỏng tương tác của người dùng với một ứng dụng góc cạnh đang chạy trong trình duyệt hoặc trên thiết bị di động. Sự kết hợp của Protractor và Selenium có thể được chia thành ba phân vùng cụ thể là kiểm tra, máy chủ và Trình duyệt, như thể hiện trong sơ đồ sau:

Quy trình Selenium WebDriver

Như chúng ta đã thấy trong sơ đồ trên, một bài kiểm tra sử dụng Selenium WebDriver bao gồm ba quá trình sau:

  • Các tập lệnh thử nghiệm
  • Máy chủ
  • Trình duyệt

Trong phần này, chúng ta hãy thảo luận về sự giao tiếp giữa ba quá trình này.

Giao tiếp giữa tập lệnh thử nghiệm và máy chủ

Giao tiếp giữa hai quy trình đầu tiên - các tập lệnh thử nghiệm và máy chủ phụ thuộc vào hoạt động của Máy chủ Selenium. Nói cách khác, chúng ta có thể nói rằng cách máy chủ Selenium đang chạy sẽ tạo ra hình dạng cho quá trình giao tiếp giữa các tập lệnh thử nghiệm và máy chủ.

Máy chủ Selenium có thể chạy cục bộ trên máy của chúng tôi dưới dạng Máy chủ Selenium độc lập (selenium-server-standalone.jar) hoặc nó có thể chạy từ xa thông qua một dịch vụ (Sauce Labs). Trong trường hợp máy chủ Selenium độc lập, sẽ có một giao tiếp http giữa Node.js và máy chủ selen.

Giao tiếp giữa máy chủ và trình duyệt

Như chúng ta biết rằng máy chủ chịu trách nhiệm chuyển tiếp các lệnh tới trình duyệt sau khi thông dịch giống nhau từ các tập lệnh thử nghiệm. Đó là lý do tại sao máy chủ và trình duyệt cũng yêu cầu một phương tiện giao tiếp và ở đây việc giao tiếp được thực hiện với sự trợ giúp củaJSON WebDriver Wire Protocol. Trình duyệt mở rộng với Trình điều khiển Trình duyệt được sử dụng để diễn giải các lệnh.

Khái niệm trên về các quy trình Selenium WebDriver và giao tiếp của chúng có thể được hiểu với sự trợ giúp của sơ đồ sau:

Trong khi làm việc với Protractor, quá trình đầu tiên, đó là tập lệnh thử nghiệm được chạy bằng Node.js nhưng trước khi thực hiện bất kỳ hành động nào trên trình duyệt, nó sẽ gửi thêm một lệnh để đảm bảo rằng ứng dụng đang được thử nghiệm được ổn định.

Thiết lập máy chủ Selenium

Selenium Server hoạt động giống như một máy chủ proxy giữa tập lệnh thử nghiệm của chúng tôi và trình điều khiển trình duyệt. Về cơ bản, nó chuyển tiếp lệnh từ tập lệnh thử nghiệm của chúng tôi tới WebDriver và trả về các phản hồi từ WebDriver tới tập lệnh thử nghiệm của chúng tôi. Có các tùy chọn sau để thiết lập máy chủ Selenium được bao gồm trongconf.js tệp kịch bản kiểm tra -

Máy chủ Selenium độc lập

Nếu chúng ta muốn chạy máy chủ trên máy cục bộ của mình, chúng ta cần cài đặt máy chủ selen độc lập. Điều kiện tiên quyết để cài đặt máy chủ selen độc lập là JDK (Bộ phát triển Java). Chúng ta phải cài đặt JDK trên máy cục bộ của mình. Chúng ta có thể kiểm tra nó bằng cách chạy lệnh sau từ dòng lệnh:

java -version

Bây giờ, chúng tôi có tùy chọn cài đặt và khởi động Selenium Server theo cách thủ công hoặc từ tập lệnh thử nghiệm.

Cài đặt và khởi động máy chủ Selenium theo cách thủ công

Để cài đặt và khởi động máy chủ Selenium theo cách thủ công, chúng ta cần sử dụng công cụ dòng lệnh WebDriver-Manager đi kèm với Thước đo góc. Các bước cài đặt và khởi động máy chủ Selenium như sau:

Step 1- Bước đầu tiên là cài đặt máy chủ Selenium và ChromeDriver. Nó có thể được thực hiện với sự trợ giúp của việc chạy lệnh sau:

webdriver-manager update

Step 2- Tiếp theo, chúng ta cần khởi động máy chủ. Nó có thể được thực hiện với sự trợ giúp của việc chạy lệnh sau:

webdriver-manager start

Step 3- Cuối cùng, chúng ta cần đặt seleniumAddress trong tệp cấu hình thành địa chỉ của máy chủ đang chạy. Địa chỉ mặc định sẽ làhttp://localhost:4444/wd/hub.

Khởi động máy chủ Selenium từ Tập lệnh thử nghiệm

Để khởi động máy chủ Selenium từ Tập lệnh thử nghiệm, chúng tôi cần đặt các tùy chọn sau trong tệp cấu hình của mình:

  • Location of jar file - Chúng ta cần đặt vị trí của tệp jar cho máy chủ Selenium độc lập trong tệp cấu hình bằng cách đặt seleniumServerJar.

  • Specifying the port- Chúng ta cũng cần chỉ định cổng sử dụng để khởi động Máy chủ Selenium độc lập. Nó có thể được chỉ định trong tệp cấu hình bằng cách thiết lập seleniumPort. Cổng mặc định là 4444.

  • Array of command line options- Chúng ta cũng cần thiết lập mảng tùy chọn dòng lệnh để chuyển đến máy chủ. Nó có thể được chỉ định trong tệp cấu hình bằng cách đặt seleniumArgs. Nếu bạn cần danh sách đầy đủ các dãy lệnh, thì hãy khởi động máy chủ với-help cờ.

Làm việc với Máy chủ Selenium Từ xa

Một tùy chọn khác để chạy thử nghiệm của chúng tôi là sử dụng máy chủ Selenium từ xa. Điều kiện tiên quyết để sử dụng máy chủ từ xa là chúng ta phải có tài khoản với dịch vụ lưu trữ máy chủ. Trong khi làm việc với Thước đo góc, chúng tôi có hỗ trợ tích hợp cho các dịch vụ sau lưu trữ máy chủ -

TestObject

Để sử dụng TestObject làm Máy chủ Selenium từ xa, chúng tôi cần đặt testobjectUser, tên người dùng của tài khoản TestObject và testobjectKey, khóa API của tài khoản TestObject của chúng tôi.

BrowserStack

Để sử dụng BrowserStack làm Máy chủ Selenium từ xa, chúng tôi cần đặt browserstackUser, tên người dùng của tài khoản BrowserStack và browserstackKey, khóa API của tài khoản BrowserStack của chúng tôi.

Phòng thí nghiệm nước sốt

Để sử dụng Sauce Labs làm Máy chủ Selenium từ xa, chúng tôi cần đặt sauceUser, tên người dùng của tài khoản Sauce Labs và SauceKey, khóa API của tài khoản Sauce Labs của chúng tôi.

Kobiton

Để sử dụng Kobiton làm Máy chủ Selenium từ xa, chúng ta cần đặt kobitonUser, tên người dùng của tài khoản Kobiton và kobitonKey, khóa API của tài khoản Kobiton của chúng ta.

Kết nối trực tiếp với Trình điều khiển trình duyệt mà không cần sử dụng Máy chủ Selenium

Một tùy chọn nữa để chạy thử nghiệm của chúng tôi là kết nối trực tiếp với Trình điều khiển trình duyệt mà không cần sử dụng máy chủ Selenium. Thước đo góc có thể kiểm tra trực tiếp mà không cần sử dụng Máy chủ Selenium, chống lại Chrome và Firefox bằng cách đặt directConnect: true trong tệp cấu hình.

Thiết lập trình duyệt

Trước khi cấu hình và thiết lập trình duyệt, chúng ta cần biết những trình duyệt nào được hỗ trợ bởi Protractor. Sau đây là danh sách các trình duyệt được hỗ trợ bởi Protractor:

  • ChromeDriver
  • FirefoxDriver
  • SafariDriver
  • IEDriver
  • Appium-iOS/Safari
  • Appium-Android/Chrome
  • Selendroid
  • PhantomJS

Để thiết lập và cấu hình trình duyệt, chúng ta cần chuyển sang tệp cấu hình của Thước đo vì việc thiết lập trình duyệt được thực hiện trong đối tượng khả năng của tệp cấu hình.

Thiết lập Chrome

Để thiết lập Trình duyệt Chrome, chúng ta cần đặt đối tượng khả năng như sau

capabilities: {
   'browserName': 'chrome'
}

Chúng tôi cũng có thể thêm các tùy chọn dành riêng cho Chrome được lồng trong chromeOptions và danh sách đầy đủ của nó có thể được xem tại https://sites.google.com/a/chromium.org/chromedriver/capabilities.

Ví dụ: nếu bạn muốn thêm bộ đếm FPS ở phía trên bên phải, thì có thể thực hiện như sau trong tệp cấu hình:

capabilities: {
   'browserName': 'chrome',
   'chromeOptions': {
      'args': ['show-fps-counter=true']
   }
},

Thiết lập Firefox

Để thiết lập trình duyệt Firefox, chúng ta cần đặt đối tượng khả năng như sau:

capabilities: {
   'browserName': 'firefox'
}

Chúng tôi cũng có thể thêm các tùy chọn dành riêng cho Firefox được lồng trong đối tượng moz: firefoxOptions và danh sách đầy đủ của nó có thể được xem tại https://github.com/mozilla/geckodriver#firefox-capabilities.

Ví dụ: nếu bạn muốn chạy thử nghiệm của mình trên Firefox ở chế độ an toàn thì bạn có thể thực hiện như sau trong tệp cấu hình:

capabilities: {
   'browserName': 'firefox',
   'moz:firefoxOptions': {
     'args': ['—safe-mode']
   }
},

Thiết lập trình duyệt khác

Để thiết lập bất kỳ trình duyệt nào khác ngoài Chrome hoặc Firefox, chúng tôi cần cài đặt một tệp nhị phân riêng từ https://docs.seleniumhq.org/download/.

Thiết lập PhantonJS

Trên thực tế, PhantomJS không còn được hỗ trợ vì sự cố của nó. Thay vào đó, bạn nên sử dụng Chrome không đầu hoặc Firefox không đầu. Chúng có thể được thiết lập như sau:

Để thiết lập Chrome không đầu, chúng ta cần khởi động Chrome bằng cờ – không đầu như sau:

capabilities: {
   'browserName': 'chrome',
   'chromeOptions': {
      'args': [“--headless”, “--disable-gpu”, “--window-size=800,600”]
   }
},

Để thiết lập Firefox không đầu, chúng ta cần khởi động Firefox với –headless cờ như sau -

capabilities: {
   'browserName': 'firefox',
   'moz:firefoxOptions': {
      'args': [“--headless”]
   }
},

Thiết lập nhiều trình duyệt để thử nghiệm

Chúng tôi cũng có thể kiểm tra trên nhiều trình duyệt. Đối với điều này, chúng tôi cần sử dụng tùy chọn cấu hình multiCapabilities như sau:

multiCapabilities: [{
   'browserName': 'chrome'
},{
   'browserName': 'firefox'
}]

Khung nào?

Hai khung thử nghiệm BDD (Phát triển theo hướng hành vi), Jasmine và Mocha được hỗ trợ bởi Protractor. Cả hai khung đều dựa trên JavaScript và Node.js. Các khuôn khổ này cung cấp cú pháp, báo cáo và khung, cần thiết để viết và quản lý các bài kiểm tra.

Tiếp theo, chúng tôi xem cách chúng tôi có thể cài đặt các khung công tác khác nhau -

Hoa nhài khung

Nó là khung thử nghiệm mặc định cho Thước đo góc. Khi bạn cài đặt Protractor, bạn sẽ nhận được phiên bản Jasmine 2.x với nó. Chúng tôi không cần phải cài đặt riêng nó.

Khuôn khổ Mocha

Mocha là một khung kiểm tra JavaScript khác về cơ bản chạy trên Node.js. Để sử dụng Mocha làm khung thử nghiệm của chúng tôi, chúng tôi cần sử dụng giao diện BDD (Phát triển theo hướng hành vi) và xác nhận Chai với Chai As Promised. Việc cài đặt có thể được thực hiện với sự trợ giúp của các lệnh sau:

npm install -g mocha
npm install chai
npm install chai-as-promised

Như bạn có thể thấy, tùy chọn -g được sử dụng trong khi cài đặt mocha, đó là vì chúng tôi đã cài đặt Thước đo góc trên toàn cầu bằng tùy chọn -g. Sau khi cài đặt nó, chúng tôi cần yêu cầu và thiết lập Chai bên trong các tệp thử nghiệm của chúng tôi. Nó có thể được thực hiện như sau:

var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;

Sau đó, chúng ta có thể sử dụng Chai As Promised như vậy -

expect(myElement.getText()).to.eventually.equal('some text');

Bây giờ, chúng ta cần đặt thuộc tính khung thành mocha của tệp cấu hình bằng cách thêm khung: 'mocha'. Các tùy chọn như 'report' và 'slow' cho mocha có thể được thêm vào tệp cấu hình như sau:

mochaOpts: {
   reporter: "spec", slow: 3000
}

Khuôn khổ dưa chuột

Để sử dụng Cucumber làm khung thử nghiệm, chúng tôi cần tích hợp nó với Thước đo góc với tùy chọn khung custom. Việc cài đặt có thể được thực hiện với sự trợ giúp của các lệnh sau

npm install -g cucumber
npm install --save-dev protractor-cucumber-framework

Như bạn có thể thấy, tùy chọn -g được sử dụng trong khi cài đặt Cucumber, đó là vì chúng tôi đã cài đặt Protractor trên toàn cầu, tức là với tùy chọn -g. Tiếp theo, chúng ta cần đặt thuộc tính khung thànhcustom của tệp cấu hình bằng cách thêm khung: 'custom' và frameworkPath: 'Protractor-Cucum-framework' vào tệp cấu hình có tên CucConf.js.

Mã mẫu được hiển thị bên dưới là một tệp CucConf.js cơ bản có thể được sử dụng để chạy các tệp tính năng dưa chuột với Thước đo góc -

exports.config = {
   seleniumAddress: 'http://localhost:4444/wd/hub',

   baseUrl: 'https://angularjs.org/',

   capabilities: {
      browserName:'Firefox'
   },

   framework: 'custom',

   frameworkPath: require.resolve('protractor-cucumber-framework'),

   specs: [
      './cucumber/*.feature'
   ],

   // cucumber command line options
   cucumberOpts: {
      require: ['./cucumber/*.js'],
      tags: [],
      strict: true,
      format: ["pretty"],
      'dry-run': false,
      compiler: []
   },
   onPrepare: function () {
      browser.manage().window().maximize();
   }
};