我遵循了这个线程中的建议:Protractor e2e test case for download pdf file and the file is download proper,但是在达到比较/预期之前测试超时。
var filename = 'somefilename';
var content = 'some content\r\nsome more content';
download.click();
browser.driver.wait(function() {
return fs.existsSync(filename);
}, 5000).then(function() {
expect(fs.readFileSync(filename, {encoding: 'utf8'})).toEqual(content);
});
它会创建并下载文件,然后在此停留 5 秒钟,然后继续。我得到的信息是:
Message:
Error: Wait timed out after 5000ms
Stacktrace:
Error: Wait timed out after 5000ms
at Array.forEach (native)
From: Task: <anonymous wait>
at /path/to/test/e2e/scenarios.js:337:28
at Array.forEach (native)
其中第 337 行是 browser.driver.wait 行。
我尝试在没有 browser.driver.wait 的情况下执行此操作,因为下载实际上非常快,因为通过执行以下操作,文件只是两个短行:
expect(fs.existsSync(filename));
browser.sleep(5000);
expect(fs.readFileSync(filename, {encoding: 'utf8'})).toEqual(content);
但它说 readFileSync 的文件名不存在,我认为这是因为该文件尚未下载并且 browser.sleep(5000) 没有做任何事情。
还有其他方法可以在量角器中做承诺吗?或者任何人都可以告诉我为什么这可能不起作用?我正在运行 Protractor 2.1.0。我正在运行 1.0.0 并在重试之前更新了所有内容,但唉,它仍然无法正常工作。
最好的问候,朱莉