如何使用NightWatch验证文件已下载

时间:2018-09-04 23:57:43

标签: javascript nightwatch.js

我们需要测试单击下载按钮时的情况,

  1. 已下载所需文件(Template.xlsx),该文件位于下载文件夹(“ c:/ user / downloads /”)中。
  2. 文件大小与预期大小匹配
  3. 在下载之前,我还必须从下载文件夹中删除现有文件,以免出现相同文件的副本

我们正在使用Nightwatch.js进行测试自动化。我已经看到了一些示例(例如File Upload Testing in Nightwatch.jsTesting download links with Nightwatch.jsValidating download file in Nightwatch),但无法为我的问题找到可行的解决方案。

我知道这个问题是(Validating download file in Nightwatch)的重复,但是那里也没有提供有效的解决方案。所以我再次提出这个问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我只能在用于本地跑步的守夜人身上工作。因此,该解决方案不适用于远程服务器(例如,网格,浏览器堆栈)。我正在寻找一种远程解决方案,如果遇到问题,将会进行更新。

仅适用于本地运行的解决方案:

fs = require('fs')
async handleDownload(path, retry = 10) { 
    while(retry) {
        await this.api.pause(1000); 
        if (fs.existsSync(path) && retry) {
            break;
        }
        retry--;
        if (!retry) {
            throw new Error('Didn't find file in time');
        }
    }
    return new promise(resolve => {
        resolve(fs.open);
        // Or do other stuff, such as read file contents
    });
}

答案 1 :(得分:0)

我看到您要验证是否在BrowserStack的远程计算机上下载了文件。 BrowserStack具有自定义JavaScript命令,您可以在BrowserStack上执行测试时使用它来实现用例。请参考链接中的命令:https://www.browserstack.com/automate/node#enhancements-uploads-downloads