Подтвердить что ты не робот

Selenium Error - HTTP-запрос на удаленный WebDriver истекает через 60 секунд

Я использую Selenium в течение нескольких месяцев, которые мы используем для автоматизации некоторых наших внутренних процессов тестирования. Скрипты прошли отлично. Недавно я обновился до С# 2.40.0 webdriver, используя FF 27.01, и наши скрипты теперь терпят неудачу в случайных местах со следующей ошибкой.

[Portal.SmokeTest.SmokeRunTest.Booking] TearDown method failed. OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL htt(p)://localhost:7055/hub/session/56e99e88-ba17-4d12-bef1-c6a6367ccc2f/element timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
TearDown : OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL htt(p)://localhost:7055/hub/session/56e99e88-ba17-4d12-bef1-c6a6367ccc2f/window timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
[09:01:20]
[Portal.SmokeTest.SmokeRunTest.Booking] TearDown method failed. OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL htt(p)://localhost:7055/hub/session/56e99e88-ba17-4d12-bef1-c6a6367ccc2f/element timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
TearDown : OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL htt(p)://localhost:7055/hub/session/56e99e88-ba17-4d12-bef1-c6a6367ccc2f/window timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
   at OpenQA.Selenium.Support.UI.DefaultWait`1.PropagateExceptionIfNotIgnored(Exception e)
   at OpenQA.Selenium.Support.UI.DefaultWait`1.Until[TResult](Func`2 condition)
   at Portal.Test.Helpers.Process_Bookings.OpenBookings.SelectBooking(String bookingnumber)
   at Portal.SmokeTest.SmokeRunTest.Booking() in d:\TeamCityAgent\work\dac1dcea7f2e80df\SmokeTests\SmokeRunTest.cs:line 68
--WebException
   at System.Net.HttpWebRequest.GetResponse()
   at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
--TearDown
   at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
   at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
   at OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Execute(Command commandToExecute)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Close()
   at Portal.Test.Helpers.Setup.CloseWebdriver()
   at Portal.SmokeTest.SmokeRunTest.TearDown() in d:\TeamCityAgent\work\dac1dcea7f2e80df\SmokeTests\SmokeRunTest.cs:line 162
--WebException
   at System.Net.HttpWebRequest.GetResponse()
   at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)

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

_setup.driver.FindElement(By.XPath("//button[@class='buttonSmall lockBookingButton']")).Click();

Досадно, что попытка устранить проблему оказывается трудной, как если бы я запускал тест на своей локальной машине, в отладке он проходит. Кроме того, если я запускаю его через бегун NUNIT на машине сборки, я запускаю тест, он также проходит. Похоже, что это не так, как часть нашего процесса автоматической сборки при использовании Teamcity. Как я уже сказал, это было неплохо в течение нескольких месяцев назад, и единственное, что изменилось, это комплект веб-селен селена.

Я столкнулся с этой проблемой раньше, пока в отладке, и когда была вызвана строка кода Click(), Firefox, похоже, блокировался, и только остановка теста позволила бы продолжить Firefox. Есть несколько предложений здесь, включая изменение источника webdriver? Я бы не хотел спускаться по этому маршруту, если это возможно, если кто-либо еще может предложить какие-либо предложения.

4b9b3361

Ответ 1

new FirefoxDriver(new FirefoxBinary(),new FirefoxProfile(),TimeSpan.FromSeconds(180));

Запустите браузер, используя приведенные выше строки кода. Это сработало для меня.

Ответ 2

У меня была аналогичная проблема с использованием драйвера Chrome (v2.23)/выполнения тестов через TeamCity. Я смог исправить проблему, добавив флаг "no-sandbox" в опции Chrome:

var options = new ChromeOptions();
options.AddArgument("no-sandbox");

Я не уверен, есть ли аналогичный вариант для драйвера FF. Из того, что я понимаю, проблема связана с тем, что TeamCity работает с Selenium под учетной записью SYSTEM.

Ответ 3

Я впервые столкнулся с этой проблемой несколько месяцев назад (также в команде click()), и с тех пор это было проблемой для меня. Кажется, это какая-то проблема с привязками .NET Selenium. Это сообщение блога, которое работает в IE-драйвере, полезно для объяснения того, что происходит:

http://jimevansmusic.blogspot.com/2012/11/net-bindings-whaddaymean-no-response.html

К сожалению, не существует реального решения этой проблемы. Всякий раз, когда эта проблема была поднята разработчикам Selenium (см. Здесь), это типичный ответ:

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

Если вы можете представить последовательно воспроизводимый тестовый пример, это может быть очень полезно для того, чтобы этот баг оставался навсегда.

Тем не менее, возможно, вы можете попробовать это обходное решение тем временем. Если кнопка HTML, которую вы пытаетесь использовать click(), имеет атрибут onclick, который содержит Javascript, рассмотрите возможность использования JavascriptExecutor для выполнения этого кода, а не вызов команды click(). Я обнаружил, что выполнение javascript onclick напрямую позволяет пройти некоторые мои тесты.

Ответ 4

Похожая проблема. Попробуйте установить больше времени в конструкторе драйвера - добавьте, например.

var timespan = TimeSpan.FromMinutes(3);

var driver = new FirefoxDriver(binary, profile, timeSpan);

Ответ 5

В моем случае мой тип кнопки submit not button, и я меняю Click на Sumbit, тогда каждая работа хорошая. Что-то вроде ниже,

из driver.FindElement(By.Id("btnLogin")).Click();

to driver.FindElement(By.Id("btnLogin")).Submit();

Кстати, я пробовал весь ответ в этом посте, но не работал у меня.

Ответ 6

Я думаю, что эта проблема возникает, когда вы пытаетесь получить доступ к объекту веб-драйвера после

1) окно закрылось, и вы еще не переключились на родительский

2) вы переключились на окно, которое было не совсем готово и обновлено с тех пор, как вы переключали

ожидая, что windowhandles.count будет тем, что вы ожидаете, не учитывает содержимое страницы и не делает document.ready. Я все еще ищу решение этой проблемы

Ответ 7

В моем случае это потому, что я удалил папку обновления Chrome. После переустановки хрома все работает нормально.

Ответ 8

Проблема в том, что оценка Click() истекает на вашей сборке env.. вы можете захотеть вникнуть в то, что происходит на Click().

Кроме того, попробуйте добавить Retrys для Click(), потому что в последствии оценки занимают больше времени в зависимости от скорости сети и т.д.

Ответ 9

В моем случае я обнаружил, что эта ошибка происходит в наших командах, создающих сервер. Тесты работали на наших локальных машинах.

Проблема заключалась в том, что целевой сайт не был настроен правильно на сервере сборки, поэтому он не смог правильно открыть браузер.

Мы использовали драйвер chrome, но я не уверен, что это имеет значение.

Ответ 10

меня вполне устраивает изменение Selenium.WebDriver.ChromeDriver с 2.40.0 на 2.27.0

Ответ 11

В моем случае проблема была с SendKeys() и удаленным рабочим столом. Размещать обходной путь у меня так далеко:

У меня был тест Selenium, который проваливался при выполнении задания Jenkins на узле, размещенном в vSphere и администрируемом через RDP. После некоторого устранения неполадок выяснилось, что это успешно, если удаленный рабочий стол подключен и сфокусирован, но терпит неудачу за исключением того, что удаленный рабочий стол отключен или даже свернут.

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

Ответ 12

new FirefoxDriver(binary, profile, timeSpan) устарел.

Теперь вы можете использовать new FirefoxDriver(FirefoxDriverService.CreateDefaultService(), FirefoxOptions options, TimeSpan commandTimeout).

Существует также new FirefoxDriver(string geckoDriverDirectory, FirefoxOptions options, TimeSpan commandTimeout) и он работает. Но он недокументирован, и вам нужно вручную указать geckoDriverDirectory даже если он уже указан в Path.

Ответ 13

У нас была такая же проблема. В нашем случае браузер был заблокирован всплывающим окном входа в систему (проверка подлинности Windows), поэтому не возвращалось через 60 секунд. Добавление правильных прав доступа к учетной записи Windows, в которой Chrome запускался, решило проблему.

Ответ 14

Arrrgh! Столкнулся с этим на macOS сегодня, и проблема была так же проста: всплывающее окно с предложением установить новую версию Appium показывалось на удаленном сервере сборки CI.

Просто VNC обращался к нему и нажимал "Установить позже", чтобы исправить это.

Ответ 15

Для ChromDriver у меня работает следующее:

string chromeDriverDirectory = "C:\\temp\\2.37";
 var options = new ChromeOptions();
 options.AddArgument("-no-sandbox");
 driver = new ChromeDriver(chromeDriverDirectory, options, 
 TimeSpan.FromMinutes(2));

Селен версия 3.11, ChromeDriver 2.37