2011-08-25 6 views
4

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

ありがとうございました!

答えて

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が含まれます。ボブルDによって提供さ

+0

うわー!それは間違いなく私が探しているものです!どうもありがとう!どのようにURLクエリhttp:// hubIP:hubPort/grid/api/testsession?session = xxxxxxについて知っていましたか?つまり、これ以上の情報を得るためのドキュメントはありますか?多分もっと多くの情報があります。しかし、これは間違いなく私を助けました!ありがとう! – tester

+0

私はこの問題レポートから取り上げました:http://code.google.com/p/selenium/issues/detail?id=1541 –

+1

私はセレン2.19を使用しており、JSONParser()を解決できません。クラスパスに追加する必要があるjarファイルがありますか? – nilesh

1
HttpCommandExecutor ce = (HttpCommandExecutor) ((RemoteWebDriver)driver).getCommandExecutor(); 
ce.getAddressOfRemoteServer(); 

おそらくあなたはRemoteWebDriverのコンストラクタにそれを渡して以来、おそらくアドレスを知っているでしょう。

+0

SRYを助けることができるコードが更新されますが、これが唯一のハブのアドレスを返します。テストが実行されているマシンのアドレスが必要です。 次のコードでRemoteWebDriverを起動します。 RemoteWebDriverドライバ=新しいRemoteWebDriver(新しいURL(hubUrl)、capability); – tester

+0

あなたは何を言っているのか分かります。私はそのことをどうやって行うのか分からない。 –

+0

ハブコードで何かを変更してもらえます。誰が私がハブのソースコードを入手できるか知っていますか?私はselenium-server-standalone-2.3.0.jarしか持っていません。コマンドラインで「java -jar selenium-server-standalone-2.3.0.jar -role hub」というコマンドを使い始めます。 多分私は、テストを実行しているマシンのIPを渡す方法でビルドすることができます。 FIY:エラートレースのテストを実行しているマシンでビデオキャプチャを自動化したい。コマンドラインでVLCを使ってやっています。しかし、私はテストが実行されているマシンを知る必要があります。 – tester

1

回答が同様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]); 
関連する問題