Удаленный рабочий стол, Selenium и SendKeys: время ожидания сервера WebDriver через 60 секунд

У меня есть тест Selenium, который не пройден при запуске в рамках задания Jenkins на узле, размещенном в vSphere и администрируемом через RDP. Тест запускается с IE11.

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

OneTimeSetUp: OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL http://localhost:56095/session/817b36df-a1b5-484e-b205-d4a0bac8002a/element/0cfa6678-2104-4bc6-bb71-e6d8eac507fb/value timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out

Плохая линия:

textboxElement.SendKeys("foo").Perform();

В качестве обходного пути я вошел в систему через vSphere Console вместо RDP, а затем даже после закрытия vSphere тест больше не проходил. Это обходной путь, но я должен быть осторожным, никогда не входить через RDP и всегда администрировать только через vSphere Console.

Итак, мои вопросы:

  • Является SendKeys() как-то несовместимо с сеансом RDP и связано ли это с этой ошибкой winapi?
  • Есть ли альтернатива использованию SendKeys() в селене?

2 ответа

Нашли виновника - там был флаг RequireWindowFocus = true в InternetExplorerOptions который был причиной проблемы. После удаления я больше не получаю ошибку. Это может быть связано с https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/5431.

При выполнении сценария selenium без какой-либо среды пользовательского интерфейса привязка к процессу размер окна Chrome может отличаться от его выполнения при входе в систему с помощью RemoteDesktop.

Попробуйте явно установить размер окна в сценарии селен до неудачной команды. 1) попробуйте небольшую ширину / высоту и выполните его там, где скрипт обычно выполняется успешно, и посмотрите, что произойдет. 2) установите какое-то большое значение и выполните его в Jenkins, где обычно происходит сбой.

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