![ç»å](https://habrastorage.org/getpro/habr/post_images/a1d/3d1/525/a1d3d152571ce6c82f9c120ebd36267e.png)
ãŸããã
ããã«ã¡ã¯ãHabrïŒ ãã®åé¡ã¯ãInstagramã§èªèšŒçšã®ãããããäœæãããšããç§ã®åé¡ã§çºçããŸããã ã¿ã¹ã¯å šäœãæžãã®ã§ã¯ãªãããªã¢ãŒããµãŒããŒã«å¿ èŠãªããŒã«ãã»ããã¢ãããããšãã圢ã§å®è£ ã®äžéšã ããæžãããšã«ããŸãã
WEBãã¹ãã¯èšå€§ã§ææ§ãªåéã§ãããWEBã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãã ãã§ãªããããšãã°ããœãŒã·ã£ã«ãããã¯ãŒã¯ãæäœããããã®ããŒãµãŒãIoTããããããããã®æ§ç¯ãªã©ãJavaScriptã®ã¿ã䜿çšããŠåé¡ã解決ããããšãã§ããŸãã ïŒ
ããã¹ãããšãããã¬ãŒãºãæ°ã«å ¥ããªãå¯èœæ§ããããŸãããã®ãã¬ãŒãºã«ã¯ãããšãã°ãInstagramãFacebookã«ãã°ã€ã³ããŠçªå·ãå ¥åã§ããããããäœæã§ããèå³æ·±ããã®ãå«ãŸããŠãããããããããŸããç§ãã¡ã«ä»£ãã£ãŠã¢ã¯ã·ã§ã³ãå®è¡ãããšåæã«ãããã³ããšã³ããã©ã®ããã«å®è¡ããããã芳å¯ããã®ã¯éå±ã§ããããã¹ãã¯çã«ããªã£ãŠããããã§ã«W3Cã³ãã¥ããã£ã«ãã£ãŠæšæºåãããŠãããéçºãç¶ããŠããŸãã
ã¿ã¹ã¯ã®ç°¡åãªèª¬æ
ãã¹ãã䜿çšããŠè§£æ±ºããããã«èšå®ããã¿ã¹ã¯ã¯äœã§ããïŒ å¿ èŠãªã®ã¯ãäžéšã®ããã°ã©ã ããã©ãŠã¶ãéããèªåçã«ãªã³ã¯ãã¯ãªãã¯ããããã¹ããå ¥åããŠãäœãèµ·ãããã衚瀺ããããå¿ èŠãªçµæãã©ã¡ãŒã¿ãŒãè¿ãããšã ãã§ãã ãããŠãããã¯ãã¹ãŠLinuxäžã§å®è¡ããå¿ èŠããããŸããUbuntu16.04ãã£ã¹ããªãã¥ãŒã·ã§ã³ã«ã¯GUIããããŸããã æ¬æ Œçãªã³ã³ãã¥ãŒã¿ãŒã«é害ãçºçãããããã³ã³ãœãŒã«ã®ã¿ã䜿çšããŠäœ¿ãæ £ãããã©ãŠã¶ãŒãèµ·åããŸãã
GUIã®ãªãââãã¹ããœãªã¥ãŒã·ã§ã³ã«ã¯äœãå¿ èŠã§ããïŒ
ææ°ã®ãæä»çãªãJavaScriptãã¹ãã«å¿ èŠãªãã¹ãŠïŒ
- ãããã¬ã¹ã¯ãã ãã©ãŠã¶ãŒv 59ïŒ ã¯ãã ãã©ãŠã¶ãŒ ïŒ-ã³ã³ãœãŒã«ã®ãããã¬ã¹ãã©ãŠã¶ãŒã
- Node.jsïŒ nodejs ïŒ-JavaScriptãµãŒããŒã
- WebDriverïŒ chromedriver ïŒ-JavaScriptãã¹ããåŠçããNode.jsãä»ããŠchrome -browserãæäœããããã®ãã©ã€ããŒã
- Nightwatch.jsïŒ nightwatch ïŒã¯ãLinkedInã®Node.jsã䜿çšããŠèªåãã¹ããäœæããã³å®è¡ããããã®æåãªã©ã€ãã©ãªã§ãã
ãµãŒããŒã®ã€ã³ã¹ããŒã«
ãã¹ãŠã®ã³ã³ããŒãã³ãããã¹ãçšã«é 次ã€ã³ã¹ããŒã«ããæé ãèšè¿°ããŸãã
![ç»å](https://habrastorage.org/getpro/habr/post_images/94c/6c8/404/94c6c8404e64ec161001a64749963e3c.png)
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
![ç»å](https://habrastorage.org/getpro/habr/post_images/f5e/808/cdc/f5e808cdc8c7b2ae41f38858222c160f.png)
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ãã¹ããåŠçããŸãã
![ç»å](https://habrastorage.org/getpro/habr/post_images/176/dd7/775/176dd77750315e92786897a5efe4e83e.png)
3ïŒã chromedriverãã€ã³ã¹ããŒã«ããŸãã ãã®ãã©ã€ããŒã¯WebDriverãšããŠæ©èœããŸããããã¯ããªã³ã¯ãã¯ãªãã¯ããŠããã¹ããããã¹ããã£ãŒã«ãããã©ãŒã ã«æ¿å ¥ã§ããAPIãæäŸããŸãããã®ãããChromedriverã䜿çšããŸãã chromedriverãã€ã³ã¹ããŒã«ããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãã
npm install chromedriver
![ç»å](https://habrastorage.org/getpro/habr/post_images/c19/4d2/ab8/c194d2ab82e8a36a71debc7d89800506.png)
4ïŒã ãã€ããŠã©ããã®ã€ã³ã¹ããŒã«ã Nightwatch.jsã¯ãJavaScriptèªåãã¹ããäœæããã³å®è¡ããããã®ã©ã€ãã©ãªã§ãã
npm install nightwatch
ãã¹ãã¹ããŒã
ç°¡åã«èšããšãã¹ããŒã å šäœã¯Nightwatch.jsã®ãã¹ããChromedriverã«ãªã¯ãšã¹ããéä¿¡ããããã«èŠããChromedriverã¯Chromeãã©ãŠã¶ãåŒã³åºããŠãã¹ããå®è¡ããŸãïŒãã©ãŒã ãã£ãŒã«ãã«å ¥åããŠãªã³ã¯ãã¯ãªãã¯ããŸãïŒã
![ç»å](https://habrastorage.org/getpro/habr/post_images/442/5fc/fdb/4425fcfdb48ce9441e6919552452c767.png)
æåã®ãã¹ããã»ããã¢ããããŠå®è¡ãã
ããã©ã«ãã®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
ãã¡ã€ã«å ã®äžèšã®ã³ãŒãã®çµæã¯ãã³ã³ãœãŒã«ã®çµæã«ãªããŸãã
![ç»å](https://habrastorage.org/getpro/habr/post_images/655/910/b87/655910b87ea68e335d6d48b331ed23fe.png)
ã€ãŸããã¡ã€ã³ã®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ã衚瀺ããæ¹æ³ã確èªãããã§ããŸãã ããã«ãªã³ã¯ã§èŠã€ããããšãã§ããŸã