4

Selenium 2とGridのRemoteWebDriverを使用して、複数の仮想マシンでテストを分割しています。2台のLinuxマシンがあり、テストでLinuxマシンで実行する機能を指定したとすると、これら2台のマシンのどちらが使用されているかわかりません。それを理解する方法はありますか?driver.getServerIp()または他の何かのようなもの?その理由は、私のSeleniumテストコードで、テストが実行されているLinuxマシンのコンソールでbashスクリプトを開始したいからです。したがって、テストが実行されるマシンを知る必要があります。

みんなありがとう!

4

3 に答える 3

4

私のJavaスキルは最高ではなく、このコードはクリーンアップを使用する可能性がありますが、これは私にとってはうまくいきます。

HttpHost host = new HttpHost(yourHubIP, yourHubPort); 
DefaultHttpClient client = new DefaultHttpClient(); 
URL testSessionApi = new URL("http://" + yourHubIP + ":" + yourHubPort + "/grid/api/testsession?session=" +  driver.getSessionId()); 
BasicHttpEntityEnclosingRequest r = new 
BasicHttpEntityEnclosingRequest("POST", testSessionApi.toExternalForm()); 
HttpResponse response  = client.execute(host,r);
JSONObject object = (JSONObject)new JSONParser().parse(EntityUtils.toString(response.getEntity()));     
String proxyID = object.get("proxyId"));

proxyIDには、ノードのIPが含まれます。

于 2011-08-25T16:33:16.613 に答える
2
HttpCommandExecutor ce = (HttpCommandExecutor) ((RemoteWebDriver)driver).getCommandExecutor();
ce.getAddressOfRemoteServer();

とにかくRemoteWebDriverのコンストラクターにアドレスを渡したので、おそらくアドレスを知っているでしょう。

于 2011-08-25T13:48:46.707 に答える
1

Bobble Dによって提供された回答は、Nileshによっても言及されているようにJSONParserに問題があったということだけで機能しています。これは、役立つ更新されたコードです。

HttpHost host = new HttpHost(yourHubIP, yourHubPort); 
DefaultHttpClient client = new DefaultHttpClient(); 
URL testSessionApi = new URL("http://" + yourHubIP + ":" + yourHubPort +         "/grid/api/testsession?session=" +  ((RemoteWebDriver) driver).getSessionId()); 
BasicHttpEntityEnclosingRequest r = new 
BasicHttpEntityEnclosingRequest("POST", testSessionApi.toExternalForm()); 
HttpResponse response  = client.execute(host,r);
JSONObject object = new JSONObject(EntityUtils.toString(response.getEntity()));   
String proxyID = object.get("proxyId"));
System.out.println(proxyID.split("//")[1].split(":")[0]);
于 2012-06-29T10:13:18.610 に答える