Busur Derajat - Busur Derajat Dan Server Selenium

Seperti dibahas sebelumnya, Busur derajat adalah open source, kerangka pengujian ujung ke ujung untuk aplikasi Angular dan AngularJS. Ini adalah program Node.js. Di sisi lain, Selenium adalah kerangka kerja otomatisasi browser yang mencakup Server Selenium, API WebDriver, dan driver browser WebDriver.

Busur derajat dengan Selenium

Jika kita berbicara tentang hubungan busur derajat dan selenium, busur derajat dapat bekerja dengan server selenium untuk menyediakan infrastruktur pengujian otomatis. Infrastruktur dapat mensimulasikan interaksi pengguna dengan aplikasi sudut yang berjalan di browser atau perangkat seluler. Hubungan Protractor dan Selenium dapat dibagi menjadi tiga partisi yaitu test, server dan Browser, seperti yang ditunjukkan pada diagram berikut -

Proses Selenium WebDriver

Seperti yang telah kita lihat pada diagram di atas, pengujian menggunakan Selenium WebDriver melibatkan tiga proses berikut -

  • Skrip pengujian
  • Server
  • Browser

Pada bagian ini, mari kita bahas komunikasi antara ketiga proses ini.

Komunikasi antara Skrip Tes & Server

Komunikasi antara dua proses pertama - skrip pengujian dan server bergantung pada cara kerja Selenium Server. Dengan kata lain, dapat dikatakan bahwa cara kerja server Selenium akan memberikan bentuk pada proses komunikasi antara skrip uji dan server.

Server Selenium dapat berjalan secara lokal di mesin kami sebagai Server Selenium mandiri (selenium-server-standalone.jar) atau dapat berjalan dari jarak jauh melalui layanan (Sauce Labs). Dalam kasus server Selenium yang berdiri sendiri, akan ada komunikasi http antara Node.js dan server selenium.

Komunikasi antara server dan browser

Seperti yang kita ketahui bahwa server bertanggung jawab untuk meneruskan perintah ke browser setelah menafsirkan yang sama dari skrip pengujian. Itulah sebabnya server dan browser juga membutuhkan media komunikasi dan di sini komunikasi dilakukan dengan bantuanJSON WebDriver Wire Protocol. Browser diperluas dengan Driver Browser yang digunakan untuk menafsirkan perintah.

Konsep di atas tentang proses Selenium WebDriver dan komunikasinya dapat dipahami dengan bantuan diagram berikut -

Saat bekerja dengan Protractor, proses pertama, yaitu skrip pengujian dijalankan menggunakan Node.js tetapi sebelum melakukan tindakan apa pun di browser, ia akan mengirimkan perintah tambahan untuk memastikan bahwa aplikasi yang diuji sudah stabil.

Menyiapkan Server Selenium

Selenium Server bertindak seperti server proxy di antara skrip pengujian kami dan driver browser. Ini pada dasarnya meneruskan perintah dari skrip pengujian kami ke WebDriver dan mengembalikan respons dari WebDriver ke skrip pengujian kami. Ada opsi berikut untuk mengatur server Selenium yang termasuk di dalamnyaconf.js file skrip uji -

Server Selenium Mandiri

Jika kita ingin menjalankan server di komputer lokal kita, kita perlu menginstal server selenium mandiri. Prasyarat untuk menginstal server selenium mandiri adalah JDK (Java Development Kit). Kita harus menginstal JDK di mesin lokal kita. Kita dapat memeriksanya dengan menjalankan perintah berikut dari baris perintah -

java -version

Sekarang, kami memiliki opsi untuk menginstal dan memulai Server Selenium secara manual atau dari skrip uji.

Menginstal dan memulai server Selenium secara manual

Untuk menginstal dan memulai server Selenium secara manual, kita perlu menggunakan alat baris perintah WebDriver-Manager yang disertakan dengan Protractor. Langkah-langkah untuk menginstal dan memulai server Selenium adalah sebagai berikut -

Step 1- Langkah pertama adalah menginstal server Selenium dan ChromeDriver. Itu dapat dilakukan dengan bantuan menjalankan perintah berikut -

webdriver-manager update

Step 2- Selanjutnya, kita perlu memulai server. Itu dapat dilakukan dengan bantuan menjalankan perintah berikut -

webdriver-manager start

Step 3- Akhirnya kita perlu mengatur seleniumAddress di file config ke alamat server yang sedang berjalan. Alamat defaultnya adalahhttp://localhost:4444/wd/hub.

Memulai server Selenium dari Test Script

Untuk memulai server Selenium dari Test Script, kita perlu mengatur opsi berikut di file konfigurasi kita -

  • Location of jar file - Kita perlu mengatur lokasi file jar untuk server Selenium mandiri di file konfigurasi dengan mengatur seleniumServerJar.

  • Specifying the port- Kami juga perlu menentukan port yang akan digunakan untuk memulai Server Selenium mandiri. Ini dapat ditentukan dalam file konfigurasi dengan mengatur seleniumPort. Port default adalah 4444.

  • Array of command line options- Kami juga perlu mengatur larik opsi baris perintah untuk diteruskan ke server. Ini dapat ditentukan dalam file konfigurasi dengan mengatur seleniumArgs. Jika Anda membutuhkan daftar lengkap dari berbagai perintah, maka mulai server dengan-help bendera.

Bekerja dengan Server Selenium Jarak Jauh

Pilihan lain untuk menjalankan pengujian kami adalah menggunakan server Selenium dari jarak jauh. Prasyarat untuk menggunakan server jarak jauh adalah kita harus memiliki akun dengan layanan yang menghosting server. Saat bekerja dengan Busur derajat, kami memiliki dukungan bawaan untuk layanan berikut yang menghosting server -

TestObject

Untuk menggunakan TestObject sebagai Server Selenium jarak jauh, kita perlu mengatur testobjectUser, nama pengguna dari akun TestObject kita dan testobjectKey, kunci API dari akun TestObject kita.

BrowserStack

Untuk menggunakan BrowserStack sebagai Server Selenium jarak jauh, kita perlu menyetel browserstackUser, nama pengguna akun BrowserStack dan browserstackKey, kunci API akun BrowserStack kita.

Lab Saus

Untuk menggunakan Sauce Labs sebagai Remote Selenium Server, kita perlu mengatur sauceUser, nama pengguna akun Sauce Labs dan SauceKey, kunci API dari akun Sauce Labs kita.

Kobiton

Untuk menggunakan Kobiton sebagai Server Selenium jarak jauh kita perlu mengatur kobitonUser, nama pengguna akun Kobiton kita dan kobitonKey, kunci API dari akun Kobiton kita.

Langsung terhubung ke Driver Browser tanpa menggunakan Server Selenium

Satu lagi pilihan untuk menjalankan pengujian kami adalah menghubungkan ke Driver Browser secara langsung tanpa menggunakan server Selenium. Busur derajat dapat menguji secara langsung, tanpa menggunakan Server Selenium, terhadap Chrome dan Firefox dengan mengatur directConnect: true di file konfigurasi.

Menyiapkan Browser

Sebelum mengkonfigurasi dan mengatur browser, kita perlu mengetahui browser mana yang didukung oleh Busur Derajat. Berikut ini adalah daftar browser yang didukung oleh Protractor -

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

Untuk setting dan konfigurasi browser, kita perlu pindah ke file config Protractor karena setup browser dilakukan di dalam objek kapabilitas file config.

Menyiapkan Chrome

Untuk menyiapkan Browser Chrome, kita perlu menyetel objek kemampuan sebagai berikut

capabilities: {
   'browserName': 'chrome'
}

Kami juga dapat menambahkan opsi Khusus Chrome yang bersarang di chromeOptions dan daftar lengkapnya dapat dilihat di https://sites.google.com/a/chromium.org/chromedriver/capabilities.

Misalnya, jika Anda ingin menambahkan penghitung FPS di kanan atas, maka dapat dilakukan seperti berikut di file konfigurasi -

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

Menyiapkan Firefox

Untuk mengatur browser Firefox, kita perlu mengatur objek kemampuan sebagai berikut -

capabilities: {
   'browserName': 'firefox'
}

Kami juga dapat menambahkan opsi khusus Firefox yang bersarang di objek moz: firefoxOptions dan daftar lengkapnya dapat dilihat di https://github.com/mozilla/geckodriver#firefox-capabilities.

Misalnya, jika Anda ingin menjalankan pengujian di Firefox dalam mode aman, maka dapat dilakukan seperti berikut di file konfigurasi -

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

Menyiapkan browser lain

Untuk menyiapkan peramban selain Chrome atau Firefox, kita perlu memasang biner terpisah dari https://docs.seleniumhq.org/download/.

Menyiapkan PhantonJS

Sebenarnya, PhantomJS tidak lagi didukung karena masalah kerusakannya. Daripada itu, disarankan untuk menggunakan Chrome tanpa kepala atau Firefox tanpa kepala. Mereka dapat diatur sebagai berikut -

Untuk menyiapkan Chrome tanpa kepala, kita perlu memulai Chrome dengan –panji tanpa kepala sebagai berikut -

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

Untuk menyiapkan Firefox tanpa kepala, kita perlu memulai Firefox dengan –headless tandai sebagai berikut -

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

Menyiapkan beberapa browser untuk pengujian

Kami juga dapat menguji beberapa browser. Untuk ini kita perlu menggunakan opsi konfigurasi multiCapabilities sebagai berikut -

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

Kerangka yang mana?

Dua kerangka kerja pengujian BDD (Behavior driven development), Jasmine dan Mocha didukung oleh Protractor. Kedua kerangka kerja tersebut didasarkan pada JavaScript dan Node.js. Sintaks, report dan scaffolding, yang diperlukan untuk menulis dan mengelola tes, disediakan oleh framework ini.

Selanjutnya, kita melihat bagaimana kita dapat menginstal berbagai kerangka kerja -

Kerangka Jasmine

Ini adalah kerangka uji default untuk Busur derajat. Saat Anda menginstal Protractor, Anda akan mendapatkan versi Jasmine 2.x dengannya. Kami tidak perlu menginstalnya secara terpisah.

Kerangka Mocha

Mocha adalah kerangka kerja pengujian JavaScript lain yang pada dasarnya berjalan di Node.js. Untuk menggunakan Mocha sebagai kerangka pengujian kami, kami perlu menggunakan antarmuka BDD (Pengembangan yang didorong oleh perilaku) dan pernyataan Chai dengan Chai As Promised. Instalasi dapat dilakukan dengan bantuan perintah berikut -

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

Seperti yang Anda lihat, opsi -g digunakan saat menginstal mocha, itu karena kami telah menginstal Protractor secara global menggunakan opsi -g. Setelah menginstalnya, kami perlu meminta dan menyiapkan Chai di dalam file pengujian kami. Itu dapat dilakukan sebagai berikut -

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

Setelah ini, kita dapat menggunakan Chai As Promised seperti itu -

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

Sekarang, kita perlu mengatur properti framework ke mocha file config dengan menambahkan framework: 'mocha'. Opsi seperti 'reporter' dan 'slow' untuk mocha dapat ditambahkan dalam file konfigurasi sebagai berikut -

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

Kerangka Mentimun

Untuk menggunakan Ketimun sebagai kerangka pengujian kami, kami perlu mengintegrasikannya dengan Busur derajat dengan opsi kerangka kerja custom. Instalasi dapat dilakukan dengan bantuan perintah berikut

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

Seperti yang Anda lihat, opsi -g digunakan saat menginstal Ketimun, karena kami telah menginstal Busur Derajat secara global yaitu dengan opsi -g. Selanjutnya, kita perlu mengatur properti framework kecustom file konfigurasi dengan menambahkan framework: 'custom' dan frameworkPath: 'Protractor-cucumber-framework' ke file konfigurasi bernama cucumberConf.js.

Kode contoh yang ditunjukkan di bawah ini adalah file cucumberConf.js dasar yang dapat digunakan untuk menjalankan file fitur mentimun dengan Busur derajat -

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();
   }
};