2012-06-29 17 views
6

के साथ शादी करना संभव है क्योंकि क्यूए मैं ऑटो अपलोड, तैनाती और आईई में कुछ समय वेब परीक्षण करने के लिए डब्ल्यूएसएच स्क्रिप्ट का उपयोग करता हूं। जावास्क्रिप्ट के साथ डब्ल्यूएसएच (wscript) आईई विंडो खोल सकता है, इसे सक्रिय कर सकता है और कुछ कार्यों को करने या कुछ अपेक्षित परिणामों को सत्यापित करने के लिए डोम मॉडल तक पहुंच सकता है। यह सेलेनियम 1.0 दृष्टिकोण की तरह है लेकिन जावा और किसी भी envrionment विन्यास की आवश्यकता नहीं है, इसलिए किसी भी डेवलपर्स/क्यूए विंडोज मशीन पर निष्पादित किया जा सकता है।क्या डब्ल्यूएसएच (wscript) से नोडज

हाल ही में मुझे विंडोज आईई डोम के साथ छेड़छाड़ के अलावा, नोडजेएस और इसकी सभी क्षमताओं को मिला। आईई डोम का परीक्षण करने के लिए मेरी पुरानी डब्लूएसएच स्क्रिप्ट को चलाने के तरीके को नहीं ढूंढ सकता है और साथ ही एक्सएमएल को पार्स करने या परीक्षण रिपोर्ट सर्वर चलाने के लिए कुछ नोडजेएस मॉड्यूल का उपयोग भी कर सकते हैं।

तो सवाल: क्या डब्ल्यूएसएच जावाकैम और नोड.जेएस चलाने और दोनों दुनिया के सभी उपहारों का उपयोग करना संभव है? मुझे डर है, ऐसा नहीं है, लेकिन उम्मीद है कि किसी के पास कामकाज है ...

कामकाज के रूप में, शायद किसी को आईओ विंडो को अपने डोम तक पहुंचने के लिए नोडजेएस में रास्ता मिला (... अपनी जेएस स्क्रिप्ट जोड़ें या SendKeys को चलाएं यह) !?

मैं समझता हूं कि नोडजेएस विंडोज़ प्रशासनिक कार्यों को करने के लिए डिज़ाइन नहीं किया गया है।

+1

पुन * मैं NodeJS और उसके सभी क्षमताओं *, जो क्षमताओं, विशेष रूप से, करता नोड पाया। जेएस है कि आप डब्ल्यूएसएच/जावास्क्रिप्ट के साथ "शादी" करना चाहते हैं? डब्ल्यूएसएच/जावास्क्रिप्ट को करने के लिए आपको क्या चाहिए, यह करने में सक्षम नहीं है? – Cheeso

+2

https://github.com/idobatter/node-win32ole आपको ऐसे पुल का निर्माण करने की अनुमति देता है। –

उत्तर

6

जबकि वास्तव में से शादी करने की आवश्यकता नहीं है, इसलिए टिप्पणियों में @o_nix ने https://github.com/idobatter/node-win32ole के लिए सुझाव दिया है।

मैं सुझाव दूंगा कि यह मॉड्यूल Google से यहां आने वाले लोगों के लिए कई मुद्दों को पूरा करता है (जैसा मैंने किया)। यह भी यहाँ NPM से उपलब्ध है: https://www.npmjs.com/package/win32ole

मॉड्यूल भी इस तरह के रूप में काफी कुछ उदाहरण हैं, है: https://github.com/idobatter/node-win32ole/blob/dev0.1.3/examples/activex_filesystemobject_sample.js

var win32ole = require('win32ole'); 
    . . . 
    var withReadFile = function(filename, callback){ 
    var fso = new ActiveXObject('Scripting.FileSystemObject'); 
    var fullpath = fso.GetAbsolutePathName(filename); 
    var file = fso.OpenTextFile(fullpath, 1, false); // open to read 
    try{ 
     callback(file); 
    }finally{ 
     file.Close(); 
    } 
    }; 
    var withEachLine = function(filename, callback){ 
    withReadFile(filename, function(file){ 
// while(file.AtEndOfStream != true) // It works. (without unary operator !) 
// while(!file.AtEndOfStream) // It does not work. 
     while(!file.AtEndOfStream._) // *** It works. oops! 
     callback(file.ReadLine()); 
    }); 
    }; 
    withEachLine(testfile, function(line){ 
    console.log(line); 
    }); 

तो, मेरे लिए, इस के रूप में वर्ष WSH स्क्रिप्ट से शादी करने के रूप में के रूप में अच्छा है कुछ भी। ट्वीक्स कोर्स में शामिल होंगे, लेकिन फिर यह अलविदा डब्लूएसएच है।

अधिक विशेष रूप से, हाथ में सवाल का, यह एक डेमो IE स्क्रिप्ट का एक टुकड़ा है: https://github.com/idobatter/node-win32ole/blob/master/examples/ie_sample.js

var win32ole = require('win32ole'); 
    . . . 
    var ie = new ActiveXObject('InternetExplorer.Application'); 
    ie.Visible = true; 
    for(var i = 0; i < uris.length; ++i){ 
    console.log(uris[i]); 
    ie.Navigate(uris[i]); 
    win32ole.sleep(15000, true, true); 
    } 
    ie.Quit(); 
+0

अच्छा, यह निश्चित रूप से सही जवाब है। जब मैंने उत्तर दिया तो यह अस्तित्व में नहीं था – Raoul

2

डब्लूएसएच एक अलग रनटाइम और नोडजेस से पुस्तकालयों का सेट है। आपके उपयोग के मामले के बारे में सोचने वाला एकमात्र सरल समाधान है कि आप अपनी डब्लूएसएच स्क्रिप्ट चलाने के लिए child_process का उपयोग करें और आउटपुट कैप्चर करें और इसे पार्स करें।

अन्य विकल्प हैं: अन्य ब्राउज़र स्वचालन मॉड्यूल पर

  • देखो - सेलेनियम अपने ही एकमात्र विकल्प नहीं है, वहाँ भी बिना सिर ब्राउज़र है, जो स्थिति को खुश कर सकते हैं: zombiejs, phantomjs आदि
  • लिखें देशी डब्ल्यूएसएच द्वारा एनडीजेएस
  • डब्ल्यूएसएच और नोडजेस के इवेंट लूप मर्ज करें और डब्ल्यूएसएच के एपीआई को नोडजेज़ में बेनकाब करें: इस तरह के एक संकीर्ण उपयोग मामले के लिए एक अच्छा विचार नहीं है।
0

बाल प्रक्रिया को फायर करने का लाभ यह है कि डब्ल्यूएसएच HTTP अनुरोध जारी करने में सक्षम है। और जाहिर है, नोड HTTP की सेवा कर सकते हैं।

कोई एक नोड.जेएस लाइब्रेरी की कल्पना कर सकता है जो पूरी तरह से ActiveXObject को प्रॉक्सी करेगा और WodeH के रूप में सभी समान शक्तियों को Node.js देगा।

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