Skip to content

WebDriverException: let's add some info about the Grid node #9792

@alb-i986

Description

@alb-i986

🚀 Feature Proposal

WebDriverException's should include the IP of the Grid node which is actually executing the commands, along with the info about the host running the test (which is being printed already).

Motivation

I've just bumped into an exception (pasted below) which is due to an issue between the Grid and the SUT, and I've realised that there is no way for me to figure out, just by looking at the exception, which node(s) of the Grid are affected (only one or two, or all?): the exception mentions the host executing the tests (which I don't really care about), but it doesn't say anything about the specific grid node running the browser (which I do care about).

org.openqa.selenium.WebDriverException: Unable to parse remote response: <html>
[..]
</html>

	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:115)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
	at RemoteDriverFactory.createDriver(RemoteDriverFactory.java:21)
       [..]
Caused by: org.openqa.selenium.json.JsonException: Unable to determine type from: <. Last 1 characters read: <
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'xxxxx', ip: 'xxx', os.name: 'Linux', os.arch: 'amd64', os.version: 'xxx', java.version: 'xxx'
Driver info: driver.version: LazyWebDriver
	at org.openqa.selenium.json.JsonInput.peek(JsonInput.java:122)
	at org.openqa.selenium.json.JsonTypeCoercer.lambda$null$6(JsonTypeCoercer.java:140)
	at org.openqa.selenium.json.JsonTypeCoercer.coerce(JsonTypeCoercer.java:126)
	at org.openqa.selenium.json.Json.toType(Json.java:69)
	at org.openqa.selenium.json.Json.toType(Json.java:55)
	at org.openqa.selenium.json.Json.toType(Json.java:50)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:112)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
       [..]

PS: it seems to me that this is unrelated to this particular exception I got.
I mean, no WebDriverException ever prints any info about the Grid node.

Example

I would expect any WebDriverException raised by a RemoteWebDriver (i.e. Grid mode), to look ideally like this (see in particular the last line, starting with "Grid info"):

org.openqa.selenium.json.WebDriverException: Some message
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'xxxxx', ip: 'xxx', os.name: 'Linux', os.arch: 'amd64', os.version: 'xxx', java.version: 'xxx'
Driver info: driver.version: RemoteWebDriver
Grid info: hub: x.x.x.x, node: 'y.y.y.y'

Metadata

Metadata

Assignees

No one assigned

    Labels

    B-gridEverything grid and server relatedC-javaJava BindingsI-enhancementSomething could be better

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions