问题
I obtain a RemoteWebDriver from the hub as follows:
RemoteWebDriver driver = new RemoteWebDriver(
new URL("http://whatever:4444/wd/hub"),
DesiredCapabilities.internetExplorer() );
Is there a way to programatically find out which node in the grid the remote driver is running on?
I want to log this in an effort to track down intermittent test failures.
回答1:
Please refer to this blog post of mine to learn how to find out the node ip and port to which the test was routed to.
Blog post : https://rationaleemotions.wordpress.com/2016/01/15/where-did-my-test-run/
In a nutshell, here's what you need to do (The blog I shared has elaborate explanation and required code )
- Get the session id from webdriver via Webdriver.getSessionId()
- You then append the session id obtained from the previous step to the URL http://localhost:4444/grid/api/testsession?session= (replace
localhost
with the actual Grid IP/host and replace4444
with the port on which grid is listening to) and trigger a POST call. - From the JSON response you parse the value of attribute
proxyId
as a URL and extract out the IP and port from it.
This is now available for ready consumption via the library talk2grid that I built.
来源:https://stackoverflow.com/questions/40925012/find-which-node-my-selenium-grid-remote-driver-is-running-on