我跟着this answer,看起来几乎是我需要的东西。
问题在于他已经知道文件名并且我正在进行e2e测试以下载文件,但文件名取决于当前时间(即使是毫秒)所以我真的不知道名字(或者它会很难得到它。)
我想我在这里错过了一些非常简单的东西,但我想到了两个方面:
希望你们可以帮助解决这些问题(我希望在第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提供了一种查找与特定模式匹配的文件名的方法(在最坏的情况下,您可以等待*.*
- 基本上,任何文件都会出现)