JS:自动将文件上传到表单

时间:2016-08-23 14:32:57

标签: javascript angularjs testing phantomjs mocha

我正在编写一个机器人,它在使用AngularJS开发的应用程序的UI上进行一些测试。 要做到这一点,我使用PhantomJS但是我被阻止了......实际上,我必须上传一个.csv文件才能验证表格,但我目前还不能。我不知道如何解决这个问题。

我发现了这个:page.uploadFile('input[name=image]', '/path/to/some/photo.jpg'); 但是,其他问题......我使用Mocha进行测试,我的测试被注入到应用程序的代码中。所以,我不知道如何获取页面对象。

我的架构的简单计划:

launcher.js

Initialize PhantomJS
page.open() {
    page.evaluate() {
        page.injectJs(all my tests);
    }
}

test_1.js

describe...
it('should works', ...) {
    Fill form 
}

谢谢!

2 个答案:

答案 0 :(得分:0)

您无法从javascript(12)填写文件输入。

你在测试什么?如果您正在测试服务器部件,则可以使用XMLHttpRequest and FormData to upload a Blob object as a file。如果您正在编写端到端测试,可以尝试webdriverio。如果你进行UI测试,你将不得不模拟它的网络部分,可能是通过编译单独的javascript文件进行测试。

答案 1 :(得分:0)

我不确定我是否遵循"我的测试被注入到应用程序的代码中#34;。您的意思是说测试与您的应用程序在同一个项目中吗?如果是这样,那就是一个非常常见的设置。您需要让服务器运行,然后针对正在运行的服务器运行测试

 var webpage = require('webpage') 
    describe("test suite", function() {
       it("test upload", function(done) {
             console.log('Loading a web page');
             var page = webpage.create();
             var url = 'http://your.server';
             page.open(url, function (status) {
                //Page is loaded!
                page.uploadFile('input[name=image]', '/path/to/some/photo.jpg');
                phantom.exit(done);
            });
       });
    });