代码之家  ›  专栏  ›  技术社区  ›  sujay

是否可以在Poltergiest中测试文件下载,而不使用selenium或chrome驱动程序

  •  1
  • sujay  · 技术社区  · 9 年前

    我正在使用Poltergiest驱动程序做无头浏览器,用capybara Rspec测试我的rails应用程序。一切正常。

    但我无法理解 如果我使用poltergeist下载文件,或者如何在按钮(链接)上验证文件下载是否发生,默认下载目录是什么。

    我正在测试的rails应用程序有一个按钮,单击该按钮会启动文件下载。我想测试文件-1-时间戳。pdf已下载。

    到目前为止,我已经试过了

    1. 我试过这个答案 https://stackoverflow.com/a/16217485/3000299

      page.response_headers['Content-Disposition'].should include("filename=\"file.zip\"")
      

    使用上述方法是不可行的,因为文件名是动态的(文件名包含在服务器端完成的时间戳)。

    1. 我在Poltergiest上发现了一个问题,并建议在这里提问 https://github.com/teampoltergeist/poltergeist/issues/485

    有没有办法访问最近下载的文件?

    任何建议或帮助都会很好。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Thomas Walpole    9 年前

    最新发布的PhantomJS不支持下载文件,因此您仅限于检查response_headers的方法。您提到这是不可行的,因为文件名中有一个时间戳,但只要您不想验证它的时间戳部分的确切值,就可以使用 match 带有正则表达式的匹配器。差不多

    page.response_headers['Content-Disposition'].should match(/filename="file-\d+\.pdf"/)
    

    应该匹配文件名,如file-1234.pdf