WebDriver: ChromeDriver attempting to reach http://localhost/session on initialization and failing

佐手、 提交于 2019-12-08 12:46:44

问题


The full error message is:

 Test(s) failed. OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL http://localhost:59662/session timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out

The line in my code where this is happening simply instances a new ChromeDriver instance:

CurrentDriver = new ChromeDriver(section["chromedriverfolder"]);

So my question is... why does a new ChromeDriver invokes the /session URL, and what could be causing it to fail?


回答1:


I experienced this same error using Selenium.WebDriver.ChromeDriver v2.22 and Chrome v52.0.2743.116 m running on TeamCity 9.x. I was able to fix the problem by rolling back the version of Chrome running on the TeamCity agents to v51.

When examining the agent executing the test, there is a popup with error: "Chrome Automation extension has crashed. Click this balloon to reload the extension."

It seems like a bug with the latest version of Chrome and Selenium.WebDriver.ChromeDriver, but as of yet this is the only lead I've found

EDIT: The link to the ChromeDriver issue

EDIT2: The link to the resolution




回答2:


I have the answer where ChromeDriver invokes the /session URL, but not to the second part why it is timing out. Please see if it can provide some lead to the debug process to find out the failure : When we call new ChromeDriver() It creates RemoteWebDriver in the constructor :

super(new DriverCommandExecutor(service), capabilities);

which ultimately goes to :

public RemoteWebDriver(CommandExecutor executor, Capabilities desiredCapabilities,
      Capabilities requiredCapabilities) {

In this method we do startClient which basically does nothing in this particular case

After startClient we do :

startSession(desiredCapabilities, requiredCapabilities);

This method issues the request /session in the following line :

Response response = execute(DriverCommand.NEW_SESSION, parameters);

The DriverCommand.NEW_SESSION is set as newSession which is mapped to post /session in the Command Codec

defineCommand(NEW_SESSION, post("/session"));


来源:https://stackoverflow.com/questions/38834808/webdriver-chromedriver-attempting-to-reach-http-localhost-session-on-initiali

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!