Selenium を使用して HTTP サーバーに HTTP 要求を送信していますが、同じ IP/ポート (127.0.0.1:8080) を介してテスト コードから接続を閉じてから再度開くと、次のエラーが発生します。HTTP サーバー アプリケーションが終了時にサーバー ソケットを閉じていることは確かですが、テスト (クライアント) コードがソケットを閉じているかどうかはわかりません。
私の RemoteWebDriver 実装は以下のとおりですstopClient()
。ソケットを閉じるためにオーバーライドする必要があるかもしれないと推測していますが、何を使用しますか?
public class MyWebDriver extends RemoteWebDriver {
public MyWebDriver(URL url, Capabilities desiredCapabilities) {
super(new MyCommandExecutor(url), desiredCapabilities);
}
public Response sendCommand(String command){
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("command", command);
Response response = execute("sendCommand", parameters);
return response;
}
}
org.openqa.selenium.remote.UnreachableBrowserException: 新しいセッションを開始できませんでした。考えられる原因は、リモート サーバーの無効なアドレスまたはブラウザーの起動エラーです。ビルド情報: バージョン: '2.44.0'、リビジョン: '76d78cf323ce037c5f92db6c1bba601c2ac43ad8'、時刻: '2014-10-23 13:11:40' システム情報: ホスト: '...'、ip: '172.27.3.221'、 os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.10.1', java.version: '1.7.0_67' ドライバー情報: driver.version: MyWebDriver at org.openqa. selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:593) で
...
原因: org.apache.http.conn.HttpHostConnectException: 127.0.0.1:8080 [/127.0.0.1] への接続に失敗しました: 接続が拒否されました
PS: クライアント コードは 30 秒ほど経過するとサーバーに再接続できることに注意してください。OS はその後ソケットを解放する必要があります。Mac OSX の Java プロセスはソケットを解放しません。