2016-09-12 45 views
0

我想使用WebBrowser控件上傳文件。它修剪起始字符有時一個,有時三個,然後選擇窗口給出錯誤Invalid file name!。似乎無法做到這一點,需要一些幫助。上傳文件不工作 - 修剪初始字符

下面是HTML:

<input name="UploadedFile" id="UploadedFile" type="file" /> 
    <input name="up" id="up" type="button" value="Upload" /> 

這裏是VB代碼:

Dim el = elc.GetElementsByName("UploadedFile") 
el.Item("UploadedFile").Focus() 
' SendKeys.Send("Capture.png" & "{ENTER}") 
SendKeys.Send("C:\Capture.png" + "{ENTER}") 
el.Item("UploadedFile").InvokeMember("Click") 

該文件的上傳按鈕,出現並回車,但不能輸入完整的文件名到文件名稱區域。

如果我使用SendKeys.Send("C:\Capture.png" + "{ENTER}")。它給出了這個錯誤: Choose window error screenshot

如果我用這個SendKeys.Send("Capture.png" + "{ENTER}")。它給出了這個錯誤: Choose window error screenshot

如果我把額外的字符,然後它工作正常,但它並不總是修剪一個字符,所以我不能把一個額外的字符來解決這個錯誤。

回答

0

你說得對@soohoonigan sendkeys速度太快,但這不是答案。我是這樣做的。

這裏是我的代碼:

Dim el = elc.GetElementsByName("UploadedFile") 
SetFile() 
el.Item("UploadedFile").InvokeMember("Click") 

Public Async Sub SetFile() 

     Await Task.Delay(1000) 
     SendKeys.Send("c:\Capture.png" & "{ENTER}") 

End Sub 

它的正常工作。

0

問題可能是由於sendkeys在聚焦後出現太快,所以前幾個字符不會被拾取。嘗試通過設置文本框的值,而不是試圖去模仿用戶擊鍵用一條線只是填充文本一下子,這可能會取代這兩個重點和的SendKeys線:

WebBrowser1.Document.GetElementById("UploadedFile").SetAttribute("value", "C:\Capture.png") 

...然後調用按鈕 - 點擊

+0

你的意思是文本仍然被切斷?如果是這樣,那麼在頁面完全加載後執行代碼還是立即執行導航命令? – soohoonigan

+0

我試過這個。它沒有工作。出於安全原因,這是不可能的。 –

+0

無論如何,我在頁面完全加載 –