2010-10-25 89 views
2

字符串fileLocator實際上是一個文件URL。我將一個文件URL定義爲'file:/// D:/images/pic1.jpg',但是由於某些原因,我沒有嘗試從c:\ Temp加載它(其中TEMP變量定義的目錄爲我的用戶)將這個序列添加到原始位置,所以java返回一個異常。selenium.attachFile(String fieldLocator,String fileLocator)方法

com.thoughtworks.selenium.SeleniumException: java.io.FileNotFoundException: C:\Temp\D:\images\pic1.jpg (Syntax error in filename) 

這是相當可預測的。

所以問題是如何使硒裝載文件直接從目錄我指定或傳遞一個URL它不會重寫?

UPD

看起來這件事情只是可以出於某種原因不添加使用「文件」協議從本地文件系統中的文件。如果我使用'http',它工作正常。

+0

我遇到同樣的問題。臨時路徑出現在實際路徑之前。你有沒有解決這個問題? – 2013-11-21 08:04:38

回答

0

硒試圖打開你的文件格式C:\ Temp的原因是因爲如果你想提供一個遠程文件,它將被下載到那裏,然後引用本地副本。

你可以嘗試這樣的事情才能看到,確實正確的網址定義:

File file = new File (filePath); 
selenium.attachFile(fieldLocator, file.toURL().toString()); 

從我所瞭解的方法attachFile它只能在Firefox瀏覽器。

+0

這就是我正在做的事情。除了在java6 toURL()方法中已被棄用,並且我使用toURI()。toURL()來代替 - 這會導致上述結果。 – endarkened 2010-10-25 13:16:21

0

這都是Java的URL.getFile()可以下載到臨時文件的問題,因爲這是Selenium RC用來獲取文件的。如果我不得不猜測,我會說你的file://D:/images/pic1.jpg被一些文件訪問控制機制(例如,權限位,Java安全配置文件等)阻止。當然,也許你的腳本在X機器上運行,Selenium RC在機器Y上運行?如果是這樣,那麼文件真的不是訪問。

Selenium需要一個URL,因爲沒有規則要求瀏覽器(在RC的控制下)和測試腳本在同一個系統上。一些服裝,如Sauce LabsBrowserMob,取決於此功能。

相關問題