我正在尝试使用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")
文件上传按钮出现并按Enter键,但无法在文件名区域输入完整的文件名。
如果我使用此SendKeys.Send("C:\Capture.png" + "{ENTER}")
。它给出了这个错误:
Choose window error screenshot
如果我使用此SendKeys.Send("Capture.png" + "{ENTER}")
。它给出了这个错误:
Choose window error screenshot
如果我添加额外的字符然后它工作正常但它并不总是修剪一个字符所以我不能添加额外的字符来解决这个错误。
答案 0 :(得分:0)
问题可能是发送键在焦点后面太快,所以前几个字符不会被拾取。尝试通过设置文本框的值来一次性填充文本框,而不是尝试模仿用户击键,这可以替换focus和sendkeys行:
WebBrowser1.Document.GetElementById("UploadedFile").SetAttribute("value", "C:\Capture.png")
...然后调用按钮单击
答案 1 :(得分: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
工作正常。