用于下载和比较browser.driver.wait文件的量角器e2e测试是超时的

时间:2015-07-02 20:53:35

标签: protractor e2e-testing

我按照此主题中的建议: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并在再次尝试之前更新了所有内容,但是唉,它仍然无法正常工作。

祝你好运, 朱莉

1 个答案:

答案 0 :(得分:3)

我弄明白了这个问题。我的文件名不包含我在&#39; default_directory&#39;中设置的路径。我的量角器-conf.js文件。一旦我完成了整条路径,它就能奏效。男孩我觉得很傻!