2015-12-11 19 views
6

मैं प्रोटैक्टर में परीक्षण लिख रहा हूं जो परीक्षण के लिए एक जेएस आधारित ढांचा और सेलेनियम परीक्षण ढेर है। मुझे एक ऐसे मुद्दे का सामना करना पड़ रहा है जहां मुझे फ़ाइल अपलोड का परीक्षण करना होगा।रिमोट फाइल अपलोड प्रोटैक्टर परीक्षण

समस्या मेरे पास है फ़ाइल मैं अपलोड करने की कोशिश कर रहा हूं परीक्षण पैकेज में है जबकि सेलेनियम नोड एक अलग सर्वर है इसलिए इसे फ़ाइल नहीं मिलेगी। मैंने फ़ाइल डिस्क्रिप्टर का उपयोग करने का प्रयास किया हालांकि फ़ाइल नाम सेट सामग्री अपलोड नहीं की गई है।

नीचे कोड स्निपेट है जो मेरे पास है।

var remote = require('selenium-webdriver/remote'); 
    browser.setFileDetector(new remote.FileDetector()); 
    var absolutePath = path.resolve(__dirname, "../specs/data/baseProducts.csv"); 
    $('input[type="file"]').sendKeys(absolutePath); 

क्या आपके पास इसके लिए कोई इनपुट है? या क्या आप किसी ऐसे व्यक्ति को जानते हैं जिसने सेलेनियम का उपयोग कर जेएस में फ़ाइल अपलोड परीक्षण लिखा है? आपका मदद बहुत सराहना की जाएगी

उत्तर

9

सबसे पहले फाइल अपलोड दूरस्थ सेलेनियम सर्वर के साथ काम करने के लिए, आप की जरूरत नवीनतम protractor (वर्तमान में, 3.0.0) (क निर्भरता के रूप में नवीनतम selenium-webdriver NodeJS पैकेज के लिए होता है जो)।

फिर, इन दो पंक्तियों सेलेनियम नोड के लिए तार पर फ़ाइलें भेजने के लिए सक्षम होने के लिए महत्वपूर्ण हैं:

var remote = require('selenium-webdriver/remote'); 
browser.setFileDetector(new remote.FileDetector()); 

और, अब आप फ़ाइलों को अपलोड करने के रूप में यदि आप परीक्षण स्थानीय स्तर पर चल रहे हैं सक्षम होना चाहिए।


पूरा काम कर परीक्षण (BrowserStack पर परीक्षण किया, पूरी तरह से मेरे लिए काम करता है):

var path = require('path'), 
    remote = require('selenium-webdriver/remote'); 

describe("File upload test", function() { 
    beforeEach(function() { 
     browser.setFileDetector(new remote.FileDetector()); 
     browser.get("https://angular-file-upload.appspot.com/"); 
    }); 

    it("should upload an image", function() { 
     var input = element(by.model("picFile")), 
      uploadedThumbnail = $("img[ngf-src=picFile]"); 

     // no image displayed 
     expect(uploadedThumbnail.isDisplayed()).toBe(true); 

     // assuming you have "test.jpg" right near the spec itself 
     input.sendKeys(path.resolve(__dirname, "test.jpg")); 

     // there is a little uploaded image displayed 
     expect(uploadedThumbnail.isDisplayed()).toBe(true); 
    }); 
}); 

भी देखें प्रासंगिक मुद्दों:

+0

मैं कई अलग अलग कल्पना फ़ाइलों में फ़ाइलों को अपलोड करने के लिए किया था, तो मैं 'onPrepare()' बजाय protractor.config फ़ाइल के खंड है कि जोड़ा। बहुत अच्छा काम करता है। जवाब के लिए धन्यवाद। – HaC

0

@alecxe के उत्तर के लिए धन्यवाद!

मुझे ब्राउज़र स्थिति में कुछ फ़ाइलों को अपलोड करने का प्रयास करने में बस यह स्थिति थी। मेरे मामले में मैं ककड़ी - प्रोटैक्टर - नोडजेएस - ब्राउज़रस्टैक का उपयोग कर रहा हूं। यह कोड पहले से ही परीक्षण किया गया है, स्थानीय एनवी और BorwserStack में काम कर रहा है।

let path = require('path'); 
let remote = require('selenium-webdriver/remote'); 

this.When(/^I upload a file$/,() => { 
    browser.setFileDetector(new remote.FileDetector()); 

    var fileToUpload = '../image_with_title.jpg'; 
    var absolutePath = path.join(__dirname, fileToUpload); 

    page.fileupload.sendKeys(absolutePath); 
}); 

जादू लाइन है:

let remote = require('selenium-webdriver/remote'); 
संबंधित मुद्दे