Selenium 2 Grid - 了解您的测试使用的节点

时间:2011-08-01 12:58:15

标签: selenium-webdriver selenium-grid

是否可以知道selenium网格集线器为您的测试分配了哪个节点?我的测试需要与节点机器上的其他服务进行通信,以便执行selenium不支持的配置。

标记

2 个答案:

答案 0 :(得分:8)

通常,您不应该依赖于了解您的测试运行的机器。 Grid 2提供了一系列回调侦听器,您可以实现这些侦听器以提供机器配置。但是,如果您真的想要查看运行测试的节点,可以使用其中一个API调用。两个端点都可以在集线器上找到:

http://localhost:4444/grid/api/proxy

http://localhost:4444/grid/api/testsession

尚未记录。但是如果您查看源代码,可以直接了解它们的工作原理。您想查看ProxyStatusServlet和TestSessionStatusServlet。

答案 1 :(得分:3)

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]);