2011-05-09 41 views
4

我正在使用IE8和watin,並試圖通過我的網頁上傳文件。我不能簡單地使用設置方法設置上傳文件,如如何使用watin中的FileUploadDialogHandler訪問文件上傳對話框

ie.FileUpload(Find.ById(「someId」))。Set(「C:/Desktop/image.jpg」);

因爲上傳textarea不能在IE8中寫入,所以我必須使用FileUploadDialogHandler,但是我找不到任何如何執行此操作的示例。

我已經找到並使用了ConfirmDialogHandler的例子,但我似乎無法弄清楚如何使用FileUploadDialogHandler。

任何例子將不勝感激。

回答

3

您的代碼看起來不錯。您不必使用FileUploadDialogHandler。當您調用Set方法時,它在內部使用。

+0

但是上傳控件中的文本框是不可寫的,所以當我進行調用時,Set方法在瀏覽器中沒有任何反應,然後當我嘗試執行上載時,我得到的文件不存在錯誤,這是與我手動操作時發生的情況相同。如果沒有讓上傳對話框先彈出,我無法輸入任何文本,而且我也無法弄清楚如何與上傳彈出框進行交互。 – michael 2011-05-09 06:33:02

+1

這不是關於文本框。當你調用Set時,WatiN通常會打開一個對話框並使用FileUploadDialogHandler在其中輸入文件名。我的猜測是你必須將你的網站添加到信任或類似的東西。 – prostynick 2011-05-09 07:10:12

+0

感謝您的幫助。我將我的網站添加到受信任的網站,現在它可以正常工作:-) – michael 2011-05-10 03:35:29

1

試試這個代碼

FileUploadDialogHandler fileupload = new FileUploadDialogHandler("filename.xls"); 
using (new UseDialogOnce(ie.DialogWatcher, fileupload)) 
{ 
    //code to intiate the file upload, like button.Click() 
} 
0

我有同樣的問題。對話框打開,但文件路徑沒有寫入。對話框仍然打開。 我發現了一個通過。在使用.Set函數之前,請使用.Click函數。 。

類似的東西:

ie.FileUpload(Find.ById( 「someId」))點擊(); ie.FileUpload(Find.ById(「someId」))。Set(「C:/Desktop/image.jpg」);

相關問題