是否可以知道 selenium 网格集线器分配给您的测试的哪个节点?我的测试需要与节点机器上的其他服务通信,以执行 selenium 不支持的配置。
标记
是否可以知道 selenium 网格集线器分配给您的测试的哪个节点?我的测试需要与节点机器上的其他服务通信,以执行 selenium 不支持的配置。
标记
通常,您不应该依赖于知道您的测试在哪台机器上运行。网格 2 提供了一系列回调侦听器,您可以实现这些侦听器来提供机器配置。但是,如果您真的想查看测试在哪个节点上运行,您可以使用其中一个 API 调用。两个端点都可以在集线器上找到:
http://localhost:4444/grid/api/proxy
http://localhost:4444/grid/api/testsession
两者都没有记录。但是,如果您查看源代码,就很容易看到它们是如何工作的。您想查看 ProxyStatusServlet 和 TestSessionStatusServlet。
String hub = "grid_server_host"; //IP or hostname of GRID
int port = 4444; // port no.
HttpHost host = new HttpHost(hub,port);
DefaultHttpClient client = new DefaultHttpClient();
String url = host + "/grid/api/testsession?session=";
URL session = new URL(url + ((RemoteWebDriver) webdriver).getSessionId());
BasicHttpEntityEnclosingRequest req;
req = new BasicHttpEntityEnclosingRequest("POST", session.toExternalForm());
org.apache.http.HttpResponse response = client.execute(host,req);
JSONObject object = new JSONObject(EntityUtils.toString(response.getEntity()));
String proxyID = (String) object.get("proxyId");
String node = (proxyID.split("//")[1].split(":")[0]);