【问题标题】:Protractor e2e test for downloading and comparing file with browser.driver.wait is timing outProtractor e2e 测试下载和比较文件与 browser.driver.wait 超时
【发布时间】:2015-07-02 20:53:34
【问题描述】:

我遵循了此线程中的建议:Protractor e2e test case for downloading pdf file 并且文件正在正确下载,但在达到比较/预期之前测试超时。

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 并在重试之前更新了所有内容,但是,它仍然无法正常工作。

最好的问候, 朱莉

【问题讨论】:

  • 我在我的 protractor-conf.js 文件中添加了 Leo 建议的功能选项。

标签: protractor e2e-testing


【解决方案1】:

我发现了问题所在。我的文件名不包含我在 protractor-conf.js 文件的“default_directory”中设置的路径。一旦我输入了整个路径,它就起作用了。男孩,我觉得自己很傻!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    相关资源
    最近更新 更多