Selenium: почему chromedriver.exe случайно «зависает», не пройдя мои тесты? - PullRequest
0 голосов
/ 06 февраля 2020

Дано:

  • Все нижеприведенные тесты Windows 10 / Server 2012 R2
  • Selenium. Net (C#) (Selenium.WebDriver nuget v3.141.0,. Net Framework v4.8)
  • ChromeDriver 78.0.3904.70
  • Google Chrome Версия 78.0.3904.97 (официальная сборка) (64-разрядная версия) )
  • Тесты запускаются автоматически Azure DevOps Server (установлен на предварительной установке)

Когда:

Казалось бы, случайно один раз каждые несколько часов (один из каждых нескольких десятков тестов)

Затем:

Журналы ChromeDriver, кажется, показывают, что он зависает на ~ 70-90 секунд и затем возобновляется. Пожалуйста, посмотрите фрагмент журнала, приведенный ниже. После 60 секунд бездействия ChromeDriver класс драйвера на стороне тестирования (C#) отключается и не проходит тест.

Эти «зависания» происходят в случайные моменты времени в случайных частях набора тестов. Иногда после команды ClickElement, иногда после команды Navigate.

Строка, в которой происходит остановка, кажется, всегда похожа на это:

[1580975930.724][DEBUG]: DevTools WebSocket Command: Runtime.evaluate (id=265) 3DF35569FFFA4540EA485ED9C4383B72 {
   "expression": "1"

C# исключение тайм-аута выглядит так:

'OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL http://localhost:25890/session/8ae62a10147ba1c9c0bc8f0ae6e47eed/element/fbd0ddbd-c198-4aa8-b05a-8a1d40766d83/click timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out'.
 Stack trace: 
   at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo)
   at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
   at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebElement.Click()
   ...

Фрагмент журнала из ChromeDriver:

[1580975930.723][INFO]: Waiting for pending navigations...
[1580975930.723][DEBUG]: DevTools WebSocket Event: Page.frameScheduledNavigation 3DF35569FFFA4540EA485ED9C4383B72 {
   "delay": 0,
   "frameId": "3DF35569FFFA4540EA485ED9C4383B72",
   "reason": "formSubmissionPost",
   "url": "https://site-under-test/some-page"
}
[1580975930.724][DEBUG]: DevTools WebSocket Event: Page.frameRequestedNavigation 3DF35569FFFA4540EA485ED9C4383B72 {
   "frameId": "3DF35569FFFA4540EA485ED9C4383B72",
   "reason": "formSubmissionPost",
   "url": "https://site-under-test/some-page"
}
[1580975930.724][DEBUG]: DevTools WebSocket Event: Page.frameStartedLoading 3DF35569FFFA4540EA485ED9C4383B72 {
   "frameId": "3DF35569FFFA4540EA485ED9C4383B72"
}
[1580975930.724][DEBUG]: DevTools WebSocket Event: Page.frameClearedScheduledNavigation 3DF35569FFFA4540EA485ED9C4383B72 {
   "frameId": "3DF35569FFFA4540EA485ED9C4383B72"
}
[1580975930.724][DEBUG]: DevTools WebSocket Command: Runtime.evaluate (id=265) 3DF35569FFFA4540EA485ED9C4383B72 {
   "expression": "1"
}  

*******************************************************************
***** The line above is the one that freezes. Note timestamps *****
*******************************************************************

[1580976006.271][DEBUG]: DevTools WebSocket Event: Runtime.executionContextDestroyed 3DF35569FFFA4540EA485ED9C4383B72 {
   "executionContextId": 5
}
[1580976006.271][DEBUG]: DevTools WebSocket Event: Runtime.executionContextsCleared 3DF35569FFFA4540EA485ED9C4383B72 {

}
[1580976006.271][DEBUG]: DevTools WebSocket Event: Page.frameNavigated 3DF35569FFFA4540EA485ED9C4383B72 {
   "frame": {
      "id": "3DF35569FFFA4540EA485ED9C4383B72",
      "loaderId": "29E7B61049A044FA7CE34819B5BFA9B3",
      "mimeType": "text/html",
      "securityOrigin": "https://site-under-test",
      "url": "https://site-under-test/some-page"
   }
}
[1580976006.271][DEBUG]: DevTools WebSocket Event: Runtime.executionContextCreated 3DF35569FFFA4540EA485ED9C4383B72 {
   "context": {
      "auxData": {
         "frameId": "3DF35569FFFA4540EA485ED9C4383B72",
         "isDefault": true,
         "type": "default"
      },
      "id": 6,
      "name": "",
      "origin": "https://site-under-test"
   }
}
[1580976006.271][DEBUG]: DevTools WebSocket Event: DOM.documentUpdated 3DF35569FFFA4540EA485ED9C4383B72 {

}
[1580976006.271][DEBUG]: DevTools WebSocket Command: DOM.getDocument (id=266) 3DF35569FFFA4540EA485ED9C4383B72 {

}
[1580976006.272][DEBUG]: DevTools WebSocket Response: Runtime.evaluate (id=265) 3DF35569FFFA4540EA485ED9C4383B72 {
   "result": {
      "description": "1",
      "type": "number",
      "value": 1
   }
}

Как я могу дополнительно выяснить, что является причиной "зависания" и устранить ее?

...