#winforms #webview2
Вопрос:
Я использую webview2 в приложении Windows Forms .NET Framework для автоматической загрузки файлов на веб-сайт. Сайт поддерживает загрузку только одного файла за раз, и нам часто приходится загружать сотни файлов. Я использовал java-скрипт в webview2 для выполнения шагов для загрузки.
Моя проблема в том, что для указания файла для загрузки мне нужно взаимодействовать с диалоговым окном файла, которое открывается при нажатии кнопки с веб-сайта в веб-представлении. В настоящее время я заполняю путь к файлу для загрузки в файловом журнале с помощью клавиш отправки, что, на мой взгляд, является плохим процессом.
Есть ли способ, которым я могу взаимодействовать с каталогом файлов, созданным с веб-сайта, через мое приложение Windows Forms? Если да, то как бы я начал выяснять, как это сделать?
Вот более подробная информация о том, чем я сейчас занимаюсь:
В веб-представлении, чтобы начать загрузку, вам нужно нажать несколько флажков, чтобы выбрать параметры загрузки, что необходимо делать каждый раз, поэтому я сначала запускаю эти команды:
await webview2.ExecuteScriptAsync($"document.getElementById('SelectedTypeId').click();");
await webview2.ExecuteScriptAsync($"document.getElementById('AutoAcceptChkbox').click();");
Затем есть команда, чтобы нажать кнопку загрузки, которая открывает диалоговое окно с файлом:
await webview2.ExecuteScriptAsync($"document.getElementById('uploadFile').click();");
Отсюда я получаю файловый журнал и использую клавиши отправки.Отправка(«Путь к файлу») и ключи отправки.Отправьте(«{ВВЕДИТЕ}»), чтобы указать путь к файлу и выбрать файл.
Как только файловый каталог закроется, у меня появится дополнительная команда, чтобы нажать кнопку импорта, чтобы начать импорт.
Проблема, с которой я столкнулся, связана с файловым журналом. Очевидно, что использовать клавиши отправки для заполнения пути к файлу-не самый лучший процесс. Кроме того, я должен заставить приложение «ждать» вокруг действий sendkeys, чтобы у журнала файлов было время появиться и закрыться, прежде чем двигаться вперед, я держу пари, что в какой-то момент возникнут ошибки, если приложение не будет ждать достаточно долго.
Комментарии:
1. Разве ты не можешь использовать а
HttpClient
? Он создан для таких случаев, как этот.2. Я уже использовал webview2 для какой-то другой автоматизации на сайте и ничего другого не рассматривал. Я посмотрю, спасибо!