为什么我的Web启动应用程序找不到现有文件?

时间:2012-06-25 09:40:45

标签: java windows jenkins java-web-start

我们使用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过程,例如我的测试类找不到文件。

2 个答案:

答案 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 questionthis Java bug report