用于下载图像文件的量角器e2e测试用例

时间:2014-12-09 11:59:31

标签: selenium-webdriver jasmine protractor

我有一个Web服务,在调用/image.gif时生成动态图像。 如何进行量角器测试以下载文件并对结果进行MD5sum?

我查看了Protractor e2e test case for downloading pdf file,但它依赖于浏览器点击下载链接。

此图片没有托管页面。

2 个答案:

答案 0 :(得分:2)

我无法在我的Windows设置上下载图像,使用Leo的回答没有错误,但我发现以下内容可以让我获得我可以“期待”的base64数据uri。

Convert an image into binary data in javascript

it('Image is version1)', function() {     
    browser.ignoreSynchronization = true                                           
    browser.get(targetUrl);     
    return browser.executeScript(function() {
        var img = document.querySelector('img');
        var canvas = document.createElement('canvas');
        canvas.width = img.width;
        canvas.height = img.height;
        var ctx = canvas.getContext("2d");
        ctx.drawImage(img, 0, 0);
        var dataURL = canvas.toDataURL("image/png");
        return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
    }).then(function (data) {
        expect(data).toEqual(base64VersionOfVersion1);
    });
});                                                      

答案 1 :(得分:1)

您应该关注我的Chrome configuration on that pdf-question link

然后,browser.get('/image.gif');不应点击某些内容,而应触发下载。

等待Stephen Baillie solution或类似的下载完成。

最后,对于MD5部分的NodeJS方面,你可以使用execSync或更实际的东西,但execSync会做:

var execSync = require('exec-sync');
var md5sum = execSync('md5sum ' + pathToDownloadedFile).split(' ')[0]
// e.g. md5sum //=> "c9b833c49ffc9d48a19d0bd858667188"