我们使用 Jenkins-Slave 来执行 Selenium Gui 测试。从站使用 WebStart 启动并在 Windows 7 机器上运行。该测试包含下载 PDF 文件,应通过查找其中的文本来检查其是否存在以及正确性。问题是,正在运行的 Selenium 测试看不到 firefox 下载的文件。事实上,该过程似乎没有在目录中看到任何文件。
如果我在本地机器上直接从 IDE 执行测试,而不是使用 Jenkins 或 WebStart,测试运行得很好。
我已经考虑过以下几点:
- 我在检查错误的目录吗?不,我复制
file.getAbsolutePath()
到 Windows 资源管理器,可以看到文件。我也很确定我在正确的机器上。 是时间问题吗?例如,文件没有完成下载吗?不,我使用 WebDriverWait 并等待 30 秒来查找文件,而实际上创建和下载 PDF 需要大约 1 秒:
WebDriverWait wait = new WebDriverWait(driver, 30, 1000); wait.until(new Predicate<WebDriver>(){ public boolean apply(WebDriver driver){ try{ log.info("file: " + pdfFile.getAbsolutePath() + ", exists: " + pdfFile.exists() + ", size: " + pdfFile.length()); // test files content ... } catch (IOException e){ return false; } } });
有谁知道可能出了什么问题?欢迎大胆猜测……
更新 我检查了 jenkins.jnlp 文件,它包含“所有权限”,因此它应该能够访问文件系统。
<security>
<all-permissions/>
</security>
更新 2 明确一点:我使用 Jenkins 运行 Selenium 测试。Selenium 远程控制 Firefox,同时下载 PDF 文件。问题是,Java 进程,例如我的测试类找不到文件。