我們使用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過程,例如我的測試類無法找到這些文件。
**我認爲,WebStart的[sandbox](http://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/security.html)設置允許下載。**如果是這樣的話: pdf文件路徑是否正確?是否永遠存在假?那麼pdfFile.canRead()怎麼樣? (通常我的猜測是系統屬性'user.dir',它在IDE和standalone中有所不同。) –
我認爲這不是問題。詹金斯奴隸包含所有權限(更新我的問題,使清晰),我想我會得到一個異常,如果由於缺少權限,無法訪問目錄。另外user.dir是一個公平的猜測,但是,當我登錄file.getAbsolutePath它應該是正確的。無論在兩臺機器上是否都不相同。 –
您是否使用[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簽名我也會這樣做。 –