Selenium WebDriver бросает WebDriverTimeoutException на RemoteWebElement.Щелчок()

у меня есть ошибка с щелчками, которые трудно воспроизвести. 1-2/10000 кликов заканчивается OpenQA.Selenium.WebDriverTimeoutException. Похоже, элемент не был нажат, и водитель ждет какой-то реакции.

Message: timeout: cannot determine loading status
from timeout: Timed out receiving message from renderer: -0.028
  (Session info: chrome=52.0.2743.116)
  (Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b),platform=Windows NT 6.3.9600 x86_64)
Stack trace:
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.InternalExecute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebElement.Click()

иногда тайм-аут в сообщении об исключении выглядит законным (300 секунд), но в большинстве случаев он имеет отрицательное значение, такое как -0.028.

я использую:

Chrome 52.0.2743.116
Selenium 2.53.1
ChromeDriver 2.23 (also produces with 2.22)

обновление:

я начал получать эту ошибку также на RemoteNavigator.GoToUrl

Type: OpenQA.Selenium.WebDriverTimeoutException
Message: timeout: cannot determine loading status
from timeout: Timed out receiving message from renderer: -0.032
  (Session info: chrome=52.0.2743.116)
  (Driver info: chromedriver=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),platform=Windows NT 6.3.9600 x86_64)
Stack trace:
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.set_Url(String value)
   at OpenQA.Selenium.Remote.RemoteNavigator.GoToUrl(String url)

3 ответов


маленький пик в исходный код Селена покажет, что каждое действие на WebElement или infact любое взаимодействие Селена вызовет execute(String driverCommand, Map<String, ?> parameters) of класс RemoteWebDriver

Это выполнит команду через CommandExecutor интерфейс который реализуется различными драйверами

ChromeDriver также реализует это, и вы видите эту ошибку из-за ошибки, которую команда chromium знает и работает. пожалуйста, проверьте информацию об ошибке здесь.

частота ошибок снизилась с Chromedriver v2.23 но это все еще происходит, но редко

ошибка#1362

ошибка#817

ошибка#1224


решил это, уменьшив степень параллелизма моего тестового бегуна с 30 до 10. Похоже, чрезмерное использование CPU по какой-то причине приводит к тому, что запросы не достигают веб-драйверов.


Я нашел причину проблемы, по крайней мере в моем случае. Мы проводили тесты Селена на машине Дженкинса, которая использовала прокси-сервер. Мы столкнулись с этой проблемой только тогда, когда мы включили ведение журнала для всех. Известно, что websockets не работают с прокси, а chromedriver использует websockets для извлечения журналов браузера. Поэтому мы прокси отключен и проблема решена.