2015-12-11 24 views
6

Tôi đang viết thử nghiệm trong thước đo góc mà khung công tác dựa trên JS và ngăn kiểm tra selen để chạy thử nghiệm. Tôi đang đối mặt với một vấn đề mà tôi phải kiểm tra tải lên tệp.Kiểm tra thước đo tải lên tệp từ xa

Sự cố tôi gặp phải là Tệp tôi đang cố gắng tải lên nằm trong gói thử nghiệm trong khi nút selenium là một máy chủ riêng biệt để máy chủ không nhận được tệp. Tôi đã thử sử dụng bộ mô tả tệp mặc dù tên tệp được đặt nội dung không được tải lên.

Dưới đây là đoạn mã mà tôi có.

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); 

Bạn có đầu vào nào không? Hoặc bạn có biết ai đã viết các bài kiểm tra tải lên tệp bằng JS bằng selen không? Trợ giúp của bạn sẽ được đánh giá cao

Trả lời

9

Trước hết, để tải lên tệp hoạt động với các máy chủ selen từ xa, bạn cần protractor mới nhất (hiện tại, 3.0.0) (gói này sẽ có gói phụ đề selenium-webdriver mới nhất)).

Sau đó, hai dòng này là rất quan trọng để có thể gửi file qua dây dẫn đến nút selen:

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

Và, bây giờ bạn sẽ có thể tải lên các tập tin như nếu bạn đang chạy thử nghiệm tại địa phương.


Toàn bộ hoạt động thử nghiệm (thử nghiệm trên BrowserStack, làm việc cho tôi một cách hoàn hảo):

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); 
    }); 
}); 

Xem thêm các vấn đề có liên quan:

+0

tôi phải upload file tại một số file đặc tả khác nhau, vì vậy tôi nói thêm rằng vào 'onPrepare() 'phần của tập tin protractor.config để thay thế. Hoạt động tuyệt vời. Cảm ơn câu trả lời. – HaC

0

Nhờ @alecxe cho câu trả lời của mình!

Tôi vừa gặp tình huống này, cố gắng tải lên một số tệp lên BrowserStack. Trong trường hợp của tôi, tôi đang sử dụng Dưa chuột - Thước đo góc - NodeJs - BrowserStack. Mã này đã được thử nghiệm, hoạt động ở địa phương env và 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); 
}); 

Dòng diệu là:

let remote = require('selenium-webdriver/remote'); 
Các vấn đề liên quan