2011-05-02 13 views
6

मैंने soda के बारे में सुना है, लेकिन ऐसा लगता है कि आपको साइन अप करने की आवश्यकता है और # मिनट (फ्री एक्ट/200 मिनट) पर एक सीमा है।मैं node.js के साथ एक ब्राउज़र (एला सेलेनियम) को कैसे नियंत्रित कर सकता हूं?

क्या किसी को पता है कि ब्राउज़र को नियंत्रित करने का कोई वैकल्पिक तरीका है या अधिक विशेष रूप से किसी वेब पेज पर जेएस को आमंत्रित करना है?

+1

जो वीडियो क्रॉस-प्लेटफ़ॉर्म लेने के लिए है। आप अपनी मशीन – Alfred

+0

पर सोडा का उपयोग कर सकते हैं आप इसे स्थानीयहोस्ट से कैसे कनेक्ट करेंगे: 4444 जो मेरा सेलेनियम ब्राउज़र उदाहरण होगा? –

+0

@Alfred - आह, https://github.com/LearnBoost/soda/raw/master/examples/google.js धन्यवाद .. क्या आप इसे उत्तर के रूप में पोस्ट कर सकते हैं? –

उत्तर

5

https://github.com/LearnBoost/soda/raw/master/examples/google.js

/** 
* Module dependencies. 
*/ 

var soda = require('../') 
    , assert = require('assert'); 

var browser = soda.createClient({ 
    host: 'localhost' 
    , port: 4444 
    , url: 'http://www.google.com' 
    , browser: 'firefox' 
}); 

browser.on('command', function(cmd, args){ 
    console.log(' \x1b[33m%s\x1b[0m: %s', cmd, args.join(', ')); 
}); 

browser 
    .chain 
    .session() 
    .open('/') 
    .type('q', 'Hello World') 
    .clickAndWait('btnG') 
    .getTitle(function(title){ 
    assert.ok(~title.indexOf('Hello World'), 'Title did not include the query'); 
    }) 
    .clickAndWait('link=Advanced search') 
    .waitForPageToLoad(2000) 
    .assertText('css=#gen-query', 'Hello World') 
    .assertAttribute('[email protected]', 'Hello World') 
    .testComplete() 
    .end(function(err){ 
    if (err) throw err; 
    console.log('done'); 
    }); 
+1

बहुत अच्छा है। मुझे अपने जावास्क्रिप्ट – Alfred

4

Zombie.js आपके लिए काम कर सकता है। यह हेडलेस है और वास्तव में अच्छा लगता है।

+1

मुझे यह मुखर चीज़ नहीं मिलती है। यहां तक ​​कि अगर यह ज़ोंबी के ब्राउज़र में काम करता है तो यह गारंटी नहीं देता है कि यह एफएफ, आईई, क्रोम, सफारी और ओपेरा पर काम करेगा। – ajsie

+2

आप उन परीक्षणों को चला सकते हैं जो कार्यक्षमता की जांच करते हैं और फिर कुछ और के साथ प्रतिपादन सत्यापित करते हैं। मैं सत्यापन को तेज करने के लिए zombie.js का उपयोग करता हूं, लेकिन इसे पूरी तरह से प्रतिस्थापित नहीं करता हूं। – mcotton

+0

@mcotton आप प्रतिपादन को कैसे सत्यापित करते हैं? क्या आपका मतलब है कि वास्तविक ब्राउज़र पर आउटपुट के साथ zombie.js पर HTML आउटपुट की तुलना करना? – KJW

1

wd है "एक Node.js webdriver/सेलेनियम 2 के लिए जावास्क्रिप्ट ग्राहक"

+1

का परीक्षण करने के लिए अभी भी पसंद है ट्यूटोरियल खोजने के लिए कोई अच्छी जगह? मैं एक एकल wd उदाहरण नहीं चला सकता क्योंकि 'title' चर 'अपरिभाषित' त्रुटि है –

2

यहाँ एक शुद्ध Node.js सेलेनियम के webdriver के लिए जावा एपीआई के आसपास आवरण:

https://npmjs.org/package/webdriver-sync

यहां एक उदाहरण है:

उसे .js फ़ाइल में सहेजें और इसे नोड के साथ चलाएं।

मॉड्यूल एक शुद्ध रैपर है, इसलिए नींद या सिंक्रोनस कॉल जैसी चीज़ें पूरी तरह से संभव हैं। यहाँ मॉड्यूल की वर्तमान इंटरफेस है:

https://github.com/jsdevel/webdriver-sync/blob/master/test/integrations/SmokeIT.js

3

अब वास्तव में हैं कि नोड के साथ काम जावास्क्रिप्ट के लिए सेलेनियम बाइंडिंग:

module.exports={ 
    ChromeDriver:ChromeDriver, 
    FirefoxDriver:FirefoxDriver, 
    HtmlUnitDriver:HtmlUnitDriver, 
    By:new By(), 
    ExpectedConditions:new ExpectedConditions(), 
    WebDriverWait:WebDriverWait, 
    Credentials:UserAndPassword, 
    Cookie:Cookie, 
    TimeUnits:TimeUnits, 
    /** 
    * @param {number} amount in mills to sleep for. 
    */ 
    sleep:function(amount){ 
     java.callStaticMethodSync(
     "java.lang.Thread", 
     "sleep", 
     new Long(amount) 
    ); 
    } 
}; 

आप एक एकीकरण परीक्षण है कि पूर्ण क्षमताओं यहाँ का परीक्षण करती है देख सकते हैं। जे एस।

यहाँ कुछ बुनियादी कदम आरंभ करने के लिए कर रहे हैं:

  1. 1 Node.js स्थापित करें, तो आप the download here.
  2. सुनिश्चित करें कि आप latest Chrome driver है और आप अपने रास्ते में डाल दिया बनाओ पा सकते हैं।
  3. अपनी परियोजना में मॉड्यूल जोड़ने के लिए npm install selenium-webdriver का उपयोग करें।
  4. एक परीक्षण लिखें, उदाहरण के लिए:

वर webdriver = की आवश्यकता होती है ('सेलेनियम-webdriver');

var driver = new webdriver.Builder(). 
    withCapabilities(webdriver.Capabilities.chrome()). 
    build(); 

driver.get('http://www.google.com'); 
driver.findElement(webdriver.By.name('q')).sendKeys('simple programmer'); 
driver.findElement(webdriver.By.name('btnG')).click(); 
driver.quit();</code> 

मैं कैसे कुछ स्क्रीनशॉट और कैसे my blog post here में एक परीक्षण ड्राइवर के रूप में मोचा का उपयोग करने के साथ ऐसा करने को कवर किया।

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

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