0

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

4

2 回答 2

0

您如何在 Windows 7 上运行 Jenkins?您是否将其安装为服务?你检查过这个常见问题列表吗?https://wiki.jenkins-ci.org/display/JENKINS/My+software+builds+on+my+computer+but+not+on+Jenkins

于 2012-06-26T18:19:24.313 回答
0

改变我的相对路径:

new File("downloads/");

通过调用“getAbsoluteFile”或只使用“C:...”到绝对值:

new File("downloads/").getAbsoluteFile();

解决了问题(但我不明白为什么)。这是因为 Jenkins 设置了 user.id 并且由于 java.io.File 实现中的错误,这可能会导致问题。请参阅此其他 SO 问题此 Java 错误报告

于 2012-07-09T10:12:14.217 回答