protractor: test download file without knowing filename
我遵循了这个答案,看起来几乎是我需要的东西。
问题在于他已经知道文件名,并且我正在进行e2e测试以下载文件,但是文件名取决于当前时间(即使以毫秒为单位),因此我实际上并不知道名称(否则它会很难获得它。)
我想我在这里遗漏了一些非常简单的东西,但是我在想两种方法:
希望你们可以为这些替代方案提供帮助(我希望对第二点有所帮助),或者给我一个更好的替代方案。谢谢
我最终遵循@alecxe的建议,这是我的答案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 }); |
只需在@elRuLL的答案中添加更多背景信息即可。
主要思想基于两点:
-
browser.wait() 非常适合该问题-它会连续执行一个函数,直到结果为true或达到超时为止。并且,超时机制已经内置。 -
glob 模块提供了一种查找与特定模式匹配的文件名的方法(在最坏的情况下,您可以等待*.* -基本上,任何文件都会出现)