2016-02-08 10 views
7

क्या जावा स्थापित किए बिना Nightwatch.js का उपयोग करना संभव है? आधिकारिक सेलेनियम जावास्क्रिप्ट बाइंडिंग्स हैं (WebDriverJS, selenium-webdriver)। जावा की आवश्यकता है क्या कोई कारण है?जावा के बिना Nightwatch.js

+0

तो आपका मतलब है कि आप ई बनाना चाहते हैं। जी। कुछ स्क्रिप्ट/स्निपेट जावा के साथ सेलेनियम सर्वर के साथ बातचीत करने के लिए? –

+0

@ नेटस्टोन सही। मुझे पता है कि WebDriverJS के साथ ब्राउज़र कैसे ड्राइव करें, इसलिए मुझे आश्चर्य हुआ कि Nightwatch.js को जावा की आवश्यकता है। –

उत्तर

4

अब यह करने के तरीके पर documentation on the official site है।

मैं विन्यास के साथ कुछ परेशानी थी, इसलिए मैं काम कर कोड के साथ एक नमूना भंडार बनाया है:

https://github.com/zeljkofilipin/mediawiki-nightwatch

+0

वह भंडार वास्तव में वास्तव में सहायक था। साझा करने के लिए धन्यवाद! – Enrico

1

वेल नाइटवॉच.जेएस सेलेनियम सर्वर के खिलाफ इसका परीक्षण चलाता है। सेलेनियम सर्वर जावा-सर्वलेट है।

तो Nightwatch.js उपयोग करने के लिए आप बस "परोक्ष रूप से" जावा की जरूरत है (यह Nightwatch.js के लिए आवश्यक नहीं है, लेकिन सेलेनियम के लिए)।

हालांकि आप सेलेनियम ग्राहक के रूप में अलग-अलग भाषाओं का उपयोग करने में सक्षम हैं, क्योंकि आप अलग WebDriver भाषा बाइंडिंग here

++++++++++++++++++ संपादित ++++++++++++++++++ डाउनलोड करने में सक्षम हैं

वे वेब ड्राइवर्स/बाइंडिंग Nightwatch.js से स्वतंत्र हैं। यदि आप अपने परीक्षण और ब्राउज़र को उसी मशीन पर चलाते हैं, तो आप सेलेनियम सर्वर के बिना इन वेब ड्राइवर्स/बाइंडिंग का उपयोग कर सकते हैं। इस मामले में आप, जावा की जरूरत नहीं है के बाद से WebDriver एक ब्राउज़र के खिलाफ सीधे परीक्षण रन (इस आगे विस्तृत है here)

Nightwatch.js दूसरी ओर definitelly जावा, की आवश्यकता है क्योंकि यह "सेलेनियम-Standalone- की जरूरत है सर्वर "जो जावा में लिखा गया है। जहां तक ​​मुझे पता है कि अन्य भाषाओं के लिए कोई अन्य कार्यान्वयन नहीं है, इसलिए जावा के बिना इसे चलाने के लिए संभव नहीं है।

Nightwatch सेलेनियम-स्टैंडअलोन-सर्वर से HTTP अनुरोध भेजता है (यहाँ जावा आता है) और सर्वर ब्राउज़र के साथ एक सत्र बनाता है।

तो योग करने के लिए: नहीं जावा -> नहीं "सेलेनियम-स्टैंडअलोन-सर्वर" -> Nightwatch.js

के साथ कोई परीक्षण
+0

धन्यवाद, लेकिन मुझे यकीन नहीं है कि हम एक दूसरे को समझते हैं। आप जावा का उपयोग किये बिना सेलेनियम का उपयोग कर सकते हैं, आधिकारिक सेलेनियम जावास्क्रिप्ट बाइंडिंग हैं। मेरा सवाल यह था कि नाइटवॉच.जेएस जावा का उपयोग करता है, जब ब्राउज़र चलाते समय इसे किया जा सकता है। वास्तव में, मेरा सवाल जावा स्थापित किए बिना Nightwatch.js का उपयोग करने का एक तरीका था। आपके उत्तर से ऐसा लगता है कि उत्तर नहीं है। –

+0

मैंने आगे अपना जवाब निर्दिष्ट किया। मेरे संपादन देखें। –

5

मैं एक जावास्क्रिप्ट समुदाय की पूर्ति कर रहा हूँ तो मैं nightwatchjs स्थानीय रूप से चलाने के लिए कोशिश कर रहा हूँ जावा खुद को पेश किए बिना। मुझे यकीन है कि यदि आप रिमोट सेलेनियम सर्वर चलाते हैं, तो उस रिमोट इंस्टेंस में जावा सर्वर को दूरस्थ ब्राउज़र-विशिष्ट ड्राइवर को कमांड पास करने के लिए चलाना पड़ता है। उदा। क्रोमड्राइवर।

यही कहा, मैं यह धारणा थी एक जावा सेलेनियम-server-स्टैंडअलोन-2.xx.0.jar सर्वर मंच के बिना एक मानक WebDriver (ChromeDriver) स्थानीय स्तर पर करने के लिए सीधे एक standard client कनेक्ट कर सकते हैं। नाइटवॉच जेएस के साथ पहला क्लाइंट मैंने कोशिश की है, कॉन्फ़िगरेशन ढूंढना बहुत मुश्किल था, जहां यह काम करेगा क्योंकि सभी दस्तावेज बताते हैं कि Nate Stone ऊपर क्या कह रहा है। सभी उदाहरण है कि मैंने देखा है संकेत मिलता है कि सेलेनियम-server-स्टैंडअलोन-2.xx.0.jar के स्थान निर्धारित करने की आवश्यकता है:

selenium": { 
    "start_process": true, 
    "server_path": "lib/selenium-server-standalone-2.53.0.jar", 
    "cli_args" : { 
    "webdriver.chrome.driver" : "/Users/greg.kedge/bin/chromedriver" 
    }, 
    "log_path": "integration/log" } 

वह मैं क्या बता सकते हैं: अगर आप Nightwatch शुरू करने के लिए (चाहते हैं और रोकें) परीक्षणों की अवधि के लिए आपके लिए सर्वर ("start_process": true), ऐसा लगता है कि जावा सर्वर को चलाने के लिए आवश्यक है।

हालांकि, अनेक परीक्षण के माध्यम से, अगर आप कमांड लाइन पर अपने दम पर ChromeDriver शुरू करने के लिए, जिससे यह सब समय होने तक चाहते हैं, मैं जावा सेलेनियम स्टैंडअलोन बिना ChromeDriver चला सकते हैं। चेतावनी: केवल ओएस एक्स पर प्रयास किया अब तक ... तो, यह सोचते हैं ChromeDriver अपने $ पथ में है:

% chromedriver --url-base=/wd/hub 
Starting ChromeDriver 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) on port 9515 
Only local connections are allowed. 

अब जब कि बंदरगाह (9515) हड़पने और आप Chrome का उपयोग करना चाहते हैं हुक्म चलाना करने के लिए अपने nightwatch.json अद्यतन करें। मैं डिफ़ॉल्ट सेट कर रहा हूं, लेकिन आप क्रोम-विशिष्ट वातावरण स्थापित कर सकते हैं।पूर्ण रूप से अपना nightwatch.json से "सेलेनियम" ब्लॉक निकालें और जहां यह एक चल सर्वर और ब्राउज़र की किस प्रकार कि सेवारत है पा सकते हैं अब Nightwatch बता:

"test_settings": { 
    "default": { 
     "launch_url": "http://localhost:8888/", 

     "selenium_host": "127.0.0.1", 
     "selenium_port": "9515", 

     "silent": true, 
     "firefox_profile": false, 
     "screenshots": { 
     "enabled": false, 
     "path": "" 
     }, 
     "desiredCapabilities": { 
     "browserName": "chrome", 
     "javascriptEnabled": true, 
     "acceptSslCerts": true, 
     "__commentOut: chromeOptions" : { 
       "args" : ["start-fullscreen"] 
      } 
     }, 
    } 
    } 

यह इस तरह से मेरे लिए काम करता का उपयोग करना; मैं जावा सेलेनियम स्टैंडअलोन सर्वर इन-प्ले के बिना क्रोम ड्राइव करने के लिए नाइटवॉच चला सकता हूं। फिर, यह क्रोमड्राइवर का उपयोग कर ओएस एक्स पर है जो हमेशा चल रहा है। मैं समझ नहीं पा रहा हूं कि जावा सेलेनियम स्टैंडअलोन सर्वर को मिश्रण में जोड़ने के बिना क्रोमड्राइवर को शुरू/बंद करने के प्रबंधन के लिए नाइटवॉच कैसे प्राप्त करें।

0

है:

global.js फ़ाइल में निर्दिष्ट करें निम्नलिखित:

const chromedriver = require('chromedriver'); 

module.exports = { 

before: function (cb) { 
    chromedriver.start(); 
    cb(); 
}, 
after: function (cb) { 
    chromedriver.stop(); 
    cb(); 
}, 

nightwatch.conf.js पर जाएं

पर वैश्विक पथ निर्दिष्ट करें

इस तरह से आप सेलेनियम को अपनी मशीन पर सेलेनियम की आवश्यकता के बिना क्रोमेड्रिवर के माध्यम से बदल दिया जाएगा।

संबंधित मुद्दे