我正在编写一个机器人,它在使用AngularJS开发的应用程序的UI上进行一些测试。 要做到这一点,我使用PhantomJS但是我被阻止了......实际上,我必须上传一个.csv文件才能验证表格,但我目前还不能。我不知道如何解决这个问题。
我发现了这个:page.uploadFile('input[name=image]', '/path/to/some/photo.jpg');
但是,其他问题......我使用Mocha进行测试,我的测试被注入到应用程序的代码中。所以,我不知道如何获取页面对象。
我的架构的简单计划:
Initialize PhantomJS
page.open() {
page.evaluate() {
page.injectJs(all my tests);
}
}
describe...
it('should works', ...) {
Fill form
}
谢谢!
答案 0 :(得分:0)
你在测试什么?如果您正在测试服务器部件,则可以使用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);
});
});
});