Удаленный рабочий стол, Selenium и SendKeys: время ожидания сервера WebDriver истекло через 60 секунд - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть тест 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() в Selenium?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

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

0 голосов
/ 10 апреля 2019

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

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

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