量角器:在不知道文件名的情况下测试下载文件

时间:2016-12-11 03:44:46

标签: selenium-webdriver jasmine protractor

我跟着this answer,看起来几乎是我需要的东西。

问题在于他已经知道文件名并且我正在进行e2e测试以下载文件,但文件名取决于当前时间(即使是毫秒)所以我真的不知道名字(或者它会很难得到它。)

我想我在这里错过了一些非常简单的东西,但我想到了两个方面:

  1. 重新创建文件名(使用返回此文件名称的相同函数)并开始检查具有该名称的文件是否存在(如果该文件不存在),然后移至下一毫秒,直到我找到正确的名称。
  2. 检查下载文件夹中是否存在“any”文件,如果我在那里找到一个,那么它应该是我正在下载的文件(对于这种情况,我不知道如何检查量角器中的整个文件夹)。
  3. 希望你们可以帮助解决这些问题(我希望在第2点提供一些帮助)或者给我一个更好的选择。感谢

2 个答案:

答案 0 :(得分:5)

我最终关注了@ alecxe的建议,这是我的回答:

var glob = require("glob");

browser.driver.wait(function () {
    var filesArray = glob.sync(filePattern);
    if (typeof filesArray !== 'undefined' && filesArray.length > 0) {
        // this check is necessary because `glob.sync` can return
        // an empty list, which will be considered as a valid output
        // making the wait to end.
        return filesArray;
    }
}, timeout).then(function (filesArray) {
    var filename = filesArray[0];
    // now we have the filename and can do whatever we want
});

答案 1 :(得分:3)

只需在@ elRuLL的答案中添加更多背景信息。

主要思想基于两件事:

  • browser.wait()完全适合这个问题 - 它将持续执行一个函数,直到它评估为true或达到超时。而且,超时机制已经内置。
  • glob module提供了一种查找与特定模式匹配的文件名的方法(在最坏的情况下,您可以等待*.* - 基本上,任何文件都会出现)