2012-06-25 31 views
0

我們使用Jenkins-Slave來執行Selenium Gui測試。從站使用WebStart啓動並在Windows 7機器上運行。該測試包含PDF文件的下載,應該通過查找其中的文本來檢查是否存在以及正確性。問題是,正在運行的Selenium測試沒有看到firefox下載的文件。實際上這個過程似乎沒有在目錄中看到任何文件。爲什麼我的網絡啓動應用程序找不到現有文件?

測試運行得很好,如果我在本地機器上執行它,直接從IDE而不是使用Jenkins或WebStart。

我已經考慮了以下幾點:

  • 難道我檢查錯誤的目錄?不,我將file.getAbsolutePath()複製到Windows資源管理器中,並可以看到這些文件。我也很確定我在正確的機器上。
  • 它是一個計時問題?例如。文件沒有完成下載?不,我用WebDriverWait,等待30秒,找到該文件,而它實際上需要全面比比皆是1秒,以創建和下載PDF:

    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; 
         } 
        } 
        }); 
    

有誰知道什麼可能是錯誤的?亂撞,歡迎...

UPDATE 我檢查了jenkins.jnlp文件,它包含「全沒有任何權限」,因此它應該能夠訪問文件系統。

<security> 
    <all-permissions/> 
</security> 

更新2 爲了說清楚:我運行詹金斯使用Selenium測試。 Selenium可以遠程控制Firefox,同時也可以下載PDF文件。問題在於Java過程,例如我的測試類無法找到這些文件。

+0

**我認爲,WebStart的[sandbox](http://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/security.html)設置允許下載。**如果是這樣的話: pdf文件路徑是否正確?是否永遠存在假?那麼pdfFile.canRead()怎麼樣? (通常我的猜測是系統屬性'user.dir',它在IDE和standalone中有所不同。) –

+0

我認爲這不是問題。詹金斯奴隸包含所有權限(更新我的問題,使清晰),我想我會得到一個異常,如果由於缺少權限,無法訪問目錄。另外user.dir是一個公平的猜測,但是,當我登錄file.getAbsolutePath它應該是正確的。無論在兩臺機器上是否都不相同。 –

+0

您是否使用[PersistenceService](http://docs.oracle。COM/JavaSE的/ 7 /文檔/ JRE/API/javaws的/ JNLP /的javax/JNLP/PersistenceService.html);看[這裏的例子](http://docs.oracle.com/javase/1.4.2/docs/guide/jws/developersguide/examples.html#PersistenceService)?使用FileContents i.o.文件。 Jar簽名我也會這樣做。 –

回答

0

更改我的相對路徑:

new File("downloads/"); 

到絕對通過調用 「getAbsoluteFile」 或只是使用 「C:...」:

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

解決問題 (但我不明白爲什麼) 。這是因爲Jenkins設置了user.id,並且由於java.io.File實現中的錯誤,這可能會導致問題。見this other SO questionthis Java bug report

相關問題