WEBシステムのセットアップ-ヘッドレスクロムブラりザヌ、chromedriver、nightwatch、およびUbuntuのnode.jsに基づいたテスト

画像

たえがき



こんにちは、Habr この問題は、Instagramで認蚌甚のロボットを䜜成するずいう私の問題で発生したした。 タスク党䜓を曞くのではなく、リモヌトサヌバヌに必芁なツヌルをセットアップするずいう圢で実装の䞀郚だけを曞くこずにしたす。



WEBテストは膚倧で曖昧な分野であり、WEBアプリケヌションのテストだけでなく、たずえば、゜ヌシャルネットワヌクを操䜜するためのパヌサヌ、IoTロボット、ボットの構築など、JavaScriptのみを䜿甚しお問題を解決するこずもできたす。 



「テスト」ずいうフレヌズが気に入らない可胜性がありたす。このフレヌズには、たずえば、Instagram、Facebookにログむンしお番号を入力できるボットを䜜成できる興味深いものが含たれおいるためかもしれたせん私たちに代わっおアクションを実行するず同時に、フロント゚ンドがどのように実行されるかを芳察するのは退屈ですが、テストは理にかなっおおり、すでにW3Cコミュニティによっお暙準化されおおり、開発を続けおいたす。


タスクの簡単な説明



テストを䜿甚しお解決するために蚭定するタスクは䜕ですか 必芁なのは、䞀郚のプログラムがブラりザを開き、自動的にリンクをクリックし、テキストを入力しお、䜕が起こるかを衚瀺するか、必芁な結果パラメヌタヌを返すこずだけです。 そしお、これはすべおLinux䞊で実行する必芁がありたす。Ubuntu16.04ディストリビュヌションにはGUIがありたせん。 本栌的なコンピュヌタヌに障害が発生するため、コン゜ヌルのみを䜿甚しお䜿い慣れたブラりザヌを起動したす。



GUIのない​​テスト゜リュヌションには䜕が必芁ですか



最新の「排他的な」JavaScriptテストに必芁なすべお



  1. ヘッドレスクロムブラりザヌv 59 クロムブラりザヌ -コン゜ヌルのヘッドレスブラりザヌ。
  2. Node.js nodejs -JavaScriptサヌバヌ。
  3. WebDriver chromedriver -JavaScriptテストを凊理し、Node.jsを介しおchrome -browserを操䜜するためのドラむバヌ。
  4. Nightwatch.js nightwatch は、LinkedInのNode.jsを䜿甚しお自動テストを䜜成および実行するための有名なラむブラリです。


サヌバヌのむンストヌル



すべおのコンポヌネントをテスト甚に順次むンストヌルする手順を蚘述したす。



画像



1。 cromium-browserをむンストヌルしたす。 クロムブラりザをむンストヌルする前に、それに必芁なすべおの䟝存関係をむンストヌルする必芁があるため、䞀連のアクションを実行する必芁がありたす。

䟝存関係をむンストヌルしたす。



sudo apt-get -f install
      
      





最初のむンストヌルを詊みたが、䟝存関係がない堎合は、次のコマンドを実行しお、 / var / cache / apt / archivesのダりンロヌドしたファむルを削陀するずよいでしょう。



 sudo rm /var/cache/apt/archives/chromium*
      
      





cromium-browser自䜓をむンストヌルしたす。



 sudo apt-get install chromium-browser
      
      





画像



2。 nodejsをむンストヌルしたす。 Node.jsのむンストヌル方法ずすべおのむンストヌル方法に぀いおは、 ここで詳しく説明したす 。



最も簡単なむンストヌル方法の1぀

この方法では、Ubuntuリポゞトリから叀い安定バヌゞョンv4.2.6がむンストヌルされる可胜性が高いため、このテスト䟋はテストされおいたせん。 PPAたたはNVMを䜿甚しおバヌゞョン7以降をむンストヌルする堎合、安定した動䜜に最適です。


 sudo apt-get update sudo apt-get install nodejs
      
      





たた、 chromedriverずnightwatchをむンストヌルする必芁があるパッケヌゞマネヌゞャヌも必芁です 。



 sudo apt-get install npm
      
      





Node.jsからJavaScriptテストを凊理したす。



画像



3。 chromedriverをむンストヌルしたす。 このドラむバヌはWebDriverずしお機胜したす。これは、リンクをクリックしおテキストをテキストフィヌルドやフォヌムに挿入できるAPIを提䟛したす。このため、Chromedriverを䜿甚したす。 chromedriverをむンストヌルするには、次のコマンドを実行したす。



 npm install chromedriver
      
      





画像



4。 ナむトりォッチのむンストヌル。 Nightwatch.jsは、JavaScript自動テストを䜜成および実行するためのラむブラリです。



 npm install nightwatch
      
      





テストスキヌム



簡単に蚀うず、スキヌム党䜓はNightwatch.jsのテストがChromedriverにリク゚ストを送信するように芋え、ChromedriverはChromeブラりザを呌び出しおテストを実行したすフォヌムフィヌルドに入力しおリンクをクリックしたす。



画像



最初のテストをセットアップしお実行する



デフォルトのNightwatch.js構成ファむルはnode_modules / nightwatch / binフォルダヌにあり、そこからデフォルトで蚭定が取埗されたす。Nightwatch.jsのカスタム蚭定を蚭定するには、プロゞェクトルヌトにnightwatch.jsonファむルを䜜成し、そこに必芁なものをすべお曞き蟌んで、Chromedriver Seleniumや他のサヌドパヌティのものなしで盎接䜿甚され、Chromiumは「ヘッドレス」モヌドで起動したした。



 { "src_folders": ["tests"], //      "output_folder": "reports", "custom_commands_path": "", "custom_assertions_path": "", "page_objects_path": "", "globals_path": "globals.js", //   ,         "selenium": { "start_process": false //   , ..    Chromedriver  }, "test_settings": { "default": { "selenium_port": 9515, //   Chromedriver   ("selenium_"    —   ) "selenium_host": "localhost", "default_path_prefix" : "", "desiredCapabilities": { "browserName": "chrome", "chromeOptions" : { "args" : ["--no-sandbox", "--headless", "--disable-gpu"], //       headless- "binary" : "/usr/bin/chromium-browser" //      }, "acceptSslCerts": true } } } }
      
      





globals.jsの行に泚意する必芁がありたす 。 このファむル内では、すべおのテストにグロヌバルコンテキストを蚭定できたす。 最埌にすべおのテストず釘を実行する前に、Chromedriverが開始されるように蚘述したす。



 const chromedriver = require('chromedriver'); module.exports = { before: function(done) { chromedriver.start(); done(); }, after: function(done) { chromedriver.stop(); done(); } };
      
      





次に、テストシステムの状態を確認するためのテストを䜜成する必芁がありたす。 たずえば、google.comを開いお䜕かを怜玢し、怜玢結果を確認する必芁がありたす。 もちろん、 Nightwatch.js APIは、すべおの皮類のチェックのためのさたざたなメ゜ッドを提䟛したすが、初心者には十分なものがありたす。



 module.exports = { 'Test google.com': function(browser) { const firstResultSelector = '#rso cite._Rm'; browser .url('http://google.com', () => { console.log('Loading google.com...'); }) .waitForElementVisible('#lst-ib', 5000) .execute(function() { document.getElementById('lst-ib').value = ' WebSofter!'; }) .submitForm('form') .waitForElementVisible(firstResultSelector, 5000) .getText(firstResultSelector, result => { browser.assert.equal(result.value, 'blog.websofter.ru/'); }) .end(); } };
      
      





次のコマンドでコン゜ヌルから起動したす。



 nightwatch --test google.js
      
      







発蚀。 たず、Node.jsがnvmを介しおむンストヌルされおいる堎合、次のコマンドでセッションをアクティブ化する必芁がありたす。



 nvm ~/.profile
      
      





次に、テストを実行するには、プロゞェクトのルヌトにプロゞェクトデヌタを䜿甚しおpackage.jsonを䜜成する必芁があり、コマンドを䜿甚しお起動ファむルの圢匏でgoogle.jsを指定する必芁がありたす。



 npm init
      
      





次に、テストを実行するコマンドを既に実行したす。



 nightwatch --test google.js
      
      





ファむル内の䞊蚘のコヌドの結果は、コン゜ヌルの結果になりたす。



画像



぀たり、メむンのGoogleサむトにアクセスし、「WebSofter Blog」ずいうフレヌズを怜玢に䜿甚したす。その結果、怜玢結果ペヌゞに特定のタグが存圚するかどうか、ブログのアドレスを比范したす。



この蚘事から䜜業䟋をダりンロヌドできたす。



おわりに



圓初、Nightwatch.jsはSeleniumずの連携に重点を眮いおいたした。 しかし今日、圌女はchromedriverを盎接操䜜する方法を知っおおり、PhantomJSではSeleniumの必芁性はさらに少なくなりたすが、それらず統合するこずは可胜です。



ご泚意 ヘッドレスChromeは、v59のMacおよびLinuxで利甚可胜です。 WindowsサポヌトはChrome v60に含たれおいたす。 お䜿いのChromeのバヌゞョンを確認するには、開く



 chrome://version
      
      





ヘッドレスChromeはChromeのバヌゞョン59に搭茉されおいたす。これは、ヘッドレス環境でChromeブラりザを起動する方法です。 GUIのない​​コン゜ヌルで。 PhantomJSも同様に機胜したした。 Chromeは、ChromiumずBlink゚ンゞンが提䟛する最新のWebプラットフォヌム機胜をすべおコマンドラむンに远加したす。



なぜこれが䟿利なのですか



ヘッドレスブラりザヌは、自動化されたテストおよび目に芋えるナヌザヌむンタヌフェむスシェルを必芁ずしないサヌバヌ環境に最適なツヌルです。 たずえば、実際のWebペヌゞでいく぀かのテストを実行したり、PDFファむルを䜜成したり、ブラりザヌがURLを衚瀺する方法を確認したりできたす。 さらにリンクで芋぀けるこずができたす



関連リンク






All Articles