我们使用 python 测试套件测试内部开发的应用程序,该套件通过 Selenium WebDriver 完成网络导航/交互。我们网络测试的一个棘手部分是处理应用程序中的一系列 pdf 报告。我们正在测试 Firefox 从 v3.6 到 v16.0.1 的计划升级,结果发现我们之前捕获报告的方式不再有效,因为 Firefox 的临时文件夹的目录结构发生了变化。我没有编写原始的 pdf 捕获代码,但我会为我们最终使用 v16.0.1 重构它,所以我想知道是否有比我们使用 Python 的 selenium webdriver 绑定保存 pdf 更好的方法'目前正在做。
以前,对于 Firefox v3.6,在单击生成报告的链接后,我们会扫描“C:\Documents and Settings\\Local Settings\Temp\plugtmp”目录中的 pdf 文件(具有特定的命名约定)以被生成。需要明确的是,我们不是从网页本身保存报告,我们只是使用在 Firefox 的 Temp 文件夹中生成的报告。
在Firefox 16.0.1中,点击生成报告的链接后,在“C:\Documents and Settings\\Local Settings\Temp\tmp*\cache*”中生成文件,文件名随机,不以“.pdf”。如果使用与我们之前的技术类似的技术,这会使捕获此文件变得更加困难 - 每个浏览器都有一个不同的 tmp*** 文件夹,该文件夹有一个充满文件夹的缓存,其中生成的报告具有随机文件名.
我能看到的最简单的解决方案是直接保存 pdf,但我还没有找到这样做的方法。
要使用我们在 FF3.6 中使用的相同方法(在 Temp 文件夹目录中找到 pdf),我认为我们需要执行以下操作:
- 找出哪个 tmp*** 文件夹属于这个特定的浏览器实例(我们可以检查浏览器实例化前后存在的 tmp*** 文件夹)
- 在该浏览器的缓存中查找在生成 pdf 报告后立即生成的文件(我们可以通过比较时间戳)
- 在缓存中生成多个文件的情况下,我们可能会根据大小进行排序,并取最大的文件,因为 pdf 几乎可以肯定是最大的临时文件(尽管这看起来很不稳定,需要在实践中进行测试) .
我对这种方法感觉不太好,想知道是否有更好的方法来捕获 pdf 文件。任何人都可以提出更好的方法吗?
注意:PDF 文件的实际抓取仍然可以正常工作。