Загрузка файлов не работает - обрезать начальные символы

Я пытаюсь загрузить файл с помощью элемента управления 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}"), Это дает эту ошибку: Выберите скриншот ошибки окна

Если я использую это SendKeys.Send("Capture.png" + "{ENTER}"), Это дает эту ошибку: Выберите скриншот ошибки окна

И если я добавлю дополнительный символ, он будет работать нормально, но он не всегда обрезает один символ, поэтому я не могу добавить дополнительный символ для решения этой ошибки.

2 ответа

Решение

Вы правы @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

Работает нормально.

Проблема может заключаться в том, что sendkeys появляется слишком быстро позади фокуса, поэтому первые несколько символов не будут подобраны. Попробуйте просто заполнить текстовое поле сразу одной строкой, установив значение текстового поля, вместо того, чтобы пытаться имитировать нажатия клавиш пользователем, это может заменить как строки фокуса, так и строки sendkeys:

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

... и затем нажмите кнопку

Другие вопросы по тегам