Как отправить файл ввода с использованием JavaScript - Selenium? - PullRequest
0 голосов
/ 11 октября 2018

Я использую C # Selenium в своем приложении, я нажимаю на ввод файла и открывается диалоговое окно файла (открытое окно).Мне нужно передать filepath, а затем нажать клавишу ввода (возврата).

Требование : работать, даже если текущий пользователь вышел из системы, рабочий стол заблокирован, сеанс RDP закрыт

  • Встроенные в Selenium SendKeys вообще не работали.
  • Windows.Forms.SendKeys.SendWait () работают не так хорошо, путь отправки в порядке, чтобы нажать ввод, обработать ожидание пользовательской сессии,Nuget -
  • InputSimulator / WinApi - доступ UAC (UIPI) запрещен

Любая возможность отправить файл без открытия диалога в JavaScript?

Спасибо

Пример использования Selenium

var button = web.FindElementByXPath("//span[@class='upload']");
button.Click();

Не работает

button.SendKeys("path"); //not input element
Windows.Forms.SendKeys.SendWait("..."); //not working for closed user session
InputSimulator.SimulateTextEntry("path"); //access denied because of Windows UIPI

1 Ответ

0 голосов
/ 13 октября 2018

В случае, описанном выше, не было ввода HTML типа файла (см. Комментарии).Диалоговое окно открытия файла после нажатия на другой элемент HTML.Передача любой строки этому элементу не увенчалась успехом.

Лучшим и, вероятно, самым простым решением, которое я использовал в приложении c #, было использование AutoIT.

Install-Package AutoItX.Dotnet

Вызов после щелчка, чтобы открыть диалоговое окно

AutoItX.ControlSend("Open", "", "", _sysPathToTheFile);
AutoItX.ControlSend("Open", "", "", "{ENTER}");

При желании вы можете вызвать

WinActivate(), WinWaitActive()...

Но ControlSend () хорошо работает и тогда, когда окно находится в фоновом режиме или, в моем случае, использовать сеанс закрыто, заблокированный экран и аналогичные ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...