Java 类org.openqa.selenium.remote.CommandCodec 实例源码
项目:talk2grid
文件:RemoteWebDriverEnricher.java
/**
* A helper method that enriches a {@link RemoteWebDriver} instance with the ability to route all browser
* interaction requests directly to the node on which the session was created and route only the session termination
* request to the hub.
*
* @param driver - A {@link RemoteWebDriver} instance.
* @param hub - A {@link Host} object that represents the Hub information.
* @return - A {@link RemoteWebDriver} instance that is enriched with the ability to route all browser interactions
* directly to the node.
*/
public static RemoteWebDriver enrichRemoteWebDriverToInteractDirectlyWithNode(RemoteWebDriver driver, Host hub) {
if (hub == null) {
return driver;
}
try {
CommandExecutor grid = driver.getCommandExecutor();
String sessionId = driver.getSessionId().toString();
GridApiAssistant assistant = new GridApiAssistant(hub);
Host nodeHost = assistant.getNodeDetailsForSession(sessionId);
URL url = new URL(String.format("http://%s:%d/wd/hub", nodeHost.getIpAddress(), nodeHost.getPort()));
CommandExecutor node = new HttpCommandExecutor(url);
CommandCodec commandCodec = getCodec(grid, "commandCodec");
ResponseCodec responseCodec = getCodec(grid, "responseCodec");
setCodec(node, commandCodec, "commandCodec");
setCodec(node, responseCodec, "responseCodec");
appendListenerToWebDriver(driver, grid, node);
LOG.info("Traffic will now be routed directly to the node.");
LOG.warning(constructWarningMessage(hub));
} catch (Exception e) {
//Gobble exceptions
LOG.warning("Unable to enrich the RemoteWebDriver instance. Root cause :" + e.getMessage()
+ ". Returning back the original instance that was passed, as is.");
}
return driver;
}