我们使用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文件,它包含“all-permissons”,因此它应该能够访问文件系统。
<security>
<all-permissions/>
</security>
更新2 为了说清楚:我使用Jenkins运行Selenium测试。 Selenium远程控制Firefox,同时下载PDF文件。问题是,Java过程,例如我的测试类找不到文件。
答案 0 :(得分:0)
你如何在Windows 7上运行Jenkins?你是作为服务安装的吗?你检查了这个常见问题清单吗? https://wiki.jenkins-ci.org/display/JENKINS/My+software+builds+on+my+computer+but+not+on+Jenkins
答案 1 :(得分:0)
改变我的相对路径:
new File("downloads/");
通过调用“getAbsoluteFile”来绝对,或者只使用“C:...”:
new File("downloads/").getAbsoluteFile();
解决问题(但我不明白为什么)。这是因为Jenkins设置了user.id,并且由于java.io.File实现中的错误,这可能会导致问题。请参阅this other SO question和this Java bug report。