2014-06-26 4 views
10

के साथ एक छवि फ़ाइल अपलोड करना मैं क्रोम ड्राइवर का उपयोग कर nightwatch.js का उपयोग कर फ्रंट-एंड परीक्षण चला रहा हूं। मुझे यह जांचने की ज़रूरत है कि छवि अपलोडिंग ठीक से काम करता है, संभावित रूप से प्रदान की गई फ़ाइल इनपुट के माध्यम से सफल कॉल पर चलने वाले कॉलबैक हैं।Nightwatch.js

मुझे पता है कि यह सेलेनियम वेब चालक की sendKeys विधि का उपयोग करके किया जा सकता है।

आप जावास्क्रिप्ट और nightwatch.js का उपयोग करके इसे कैसे पूरा कर सकते हैं? क्या आप सेलेनियम वेबड्राइवर या इसके साथ एक इंटरफ़ेस तक पहुंच सकते हैं?

+0

मुझे यह देखने में दिलचस्पी होगी कि फ़ाइल कैसे चुनी जाती है, मुझे नहीं लगता था कि ऐसी चीज संभव थी। – dandavis

उत्तर

7

उपयोग इस स्थानीय डेस्कटॉप

.setValue('input[type="file"]', require('path').resolve('/home/My-PC/Desktop/img.png')) 
1

अपनी छवि के पूर्ण पथ को सेट करने के लिए client.setValue फ़ंक्शन का उपयोग करें। मेरी परियोजना में कामकाजी उदाहरण यहां दिया गया है।

client.setValue ('# संपादित करेंचित्र। मॉड्यूल-बॉडी इनपुट [प्रकार = "फ़ाइल"]', '/Users/testing/pictures/CAM00003.jpg');

2

जैसा ऊपर बताया गया है, आप अपने इनपुट [टाइप = "फ़ाइल"] के पूर्ण पथ को पार कर सकते हैं जैसे कि आप किसी फ़ील्ड में टेक्स्ट टाइप कर रहे थे।

यह नाइटवॉच के setValue फ़ंक्शन का उपयोग करता है। आप नोड के __dirname वैश्विक var का उपयोग कर वर्तमान निर्देशिका पथ पुनर्प्राप्त कर सकते हैं।

उदाहरण के लिए: .setValue('#upload-input', __dirname + '\\upload.jpg')

+0

क्या आप विस्तारित कर सकते हैं कि आपने '' __dirname''' के बाद, डबल बैकस्लैश क्यों रखा है? चीयर्स – GrayedFox

+1

@grayedfox: बैकस्लैश विशेष वर्णों से पहले एक बचने वाला चरित्र है। इस उदाहरण में, आप बैकस्लैश (विशेष char जिसे हम उपयोग करना चाहते हैं) से बच रहे हैं, बैकस्लैश के साथ (निम्नलिखित चरित्र को दर्शाते हुए बचने वाले चरित्र को शाब्दिक रूप से व्याख्या किया जाना चाहिए)। – lacy

1

से छवि अपलोड मेरी मामले में के लिए वहाँ जिसके साथ type = "फ़ाइल इनपुट है आईडी =" अपलोड आइकन "के साथ एक div है "

.setValue('//div[@id="Upload Icon"]/input[@type="file"]', require('path').resolve(__dirname + '/categoryIcon.png')) 

उपरोक्त कोड मेरे लिए ठीक काम कर रहा है।