2012-06-25 7 views
6

से सत्र आईडी निर्धारित करना मैं ब्राउज़र पर WebDriverJS चलाने की कोशिश कर रहा हूं, लेकिन दस्तावेज़ होस्ट ब्राउज़र को नियंत्रित करने के तरीके पर कुछ अस्पष्ट है। यहाँ, यह कहते हैं:WebDriverJS

एक ब्राउज़र का शुभारंभ किसी अन्य ब्राउज़र के खिलाफ एक WebDriver परीक्षण चलाने के लिए एक बालक अनावश्यक (बस नोड का उपयोग कर की तुलना में) है। इसके बजाए, ब्राउज़र में WebDriverJS का उपयोग के लिए है, जो ब्राउज़र वास्तव में स्क्रिप्ट चला रहा है स्वचालित कर रहा है। यह तब तक पूरा किया जा सकता है जब तक सर्वर के लिए यूआरएल और ब्राउज़र के लिए सत्र आईडी ज्ञात हो। इन मूल्यों जा बिल्डर सीधे के लिए पारित कर सकते हैं, वे भी wdurl का उपयोग कर परिभाषित किया जा सकता है और "वातावरण चर" है, जो लोड हो रहा है पृष्ठ के URL क्वेरी डेटा से पार्स कर रहे हैं wdsid:

<!-- Assuming HTML URL is /test.html?wdurl=http://localhost:4444/wd/hub&wdsid=foo1234 --> 
    <!DOCTYPE html> 
    <script src="webdriver.js"></script> 
    <input id="input" type="text"/> 
    <script> 
     // Attaches to the server and session controlling this browser. 
     var driver = new webdriver.Builder().build(); 

     var input = driver.findElement(webdriver.By.tagName('input')); 
     input.sendKeys('foo bar baz').then(function() { 
     assertEquals('foo bar baz', 
      document.getElementById('input').value); 
     }); 
    </script> 

मैं चाहता हूँ Node.js से मेरा टेस्ट पेज खोलने के लिए, और फिर क्लाइंट-साइड स्क्रिप्ट में शामिल कमांड चलाएं। हालांकि, मुझे नहीं पता कि मैं सत्र बनाने के दौरान सत्र आईडी (wdsid क्वेरी पैरामीटर) निकालने में सक्षम कैसे होगा। क्या किसी को कोई ख़याल है?

उत्तर

7

अंत में वेबप्रिवरजेएस स्रोत कोड के माध्यम से बहुत सारे प्रयोग और पढ़ने के बाद इसे समझ लिया गया।

var webdriver = require('./assets/webdriver'); 

var driver = new webdriver.Builder(). 
    usingServer('http://localhost:4444/wd/hub'). 
    withCapabilities({ 
     'browserName': 'chrome', 
     'version': '', 
     'platform': 'ANY', 
     'javascriptEnabled': true 
    }). 
    build(); 

var testUrl = 'http://localhost:3000/test', 
    hubUrl = 'http://localhost:4444/wd/hub', 
    sessionId; 

driver.session_.then(function(sessionData) { 
    sessionId = sessionData.id; 
    driver.get(testUrl + '?wdurl=' + hubUrl + '&wdsid=' + sessionId); 
}); 

driver.session_ एक वादा ऑब्जेक्ट देता है जिसमें तत्कालता पर सत्र डेटा और अन्य जानकारी शामिल होगी। .then का उपयोग करना (कॉलबैक (सत्रडेटा)) आपको इच्छित डेटा को कुशलतापूर्वक उपयोग करने की अनुमति देगा।

+1

यदि यह एक बिंदु पर काम करता है, तो यह अब प्रकट नहीं होता है। मुझे लगता है कि इसे sessionData.id_ में ले जाया गया है – Lukus