0

ノードを起動してハブに接続するJavaアプリケーションを作成する必要があります。これまで、ハブとノードが同じコンピューター上にある場合にこれを行うことができましたが、別のマシンハブに接続しようとすると、登録プロセスが永久にハングします。

別のアプローチを試しました。コードでbatファイル関数を呼び出すだけです。

String command = "java -jar selenium-server-standalone-2.26.0.jar -role node -hub http://192.168.0.11:4444/grid/register -port 4449 -Dwebdriver.chrome.driver=data\\driver\\chromedriver.exe -Dwebdriver.ie.driver=data\\driver\\IEDriverServer.exe -nodeConfig data\\configurations.json";

    try
    {
        pr = Runtime.getRuntime().exec(command);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

このコマンドは、batファイルから呼び出されたときに機能しますが、コードでは、ノードとハブが同じコンピューター上にある場合にのみ機能します。

また、RegistrationRequestを使用しようとしました。

RegistrationRequest req = new RegistrationRequest();
                req.setRole(GridRole.NODE);

                Map<String, Object> nodeConfiguration = new HashMap<String,
                Object>();

                nodeConfiguration.put(RegistrationRequest.AUTO_REGISTER, true);
                nodeConfiguration.put(RegistrationRequest.HUB_HOST, "192.168.100.66");

                nodeConfiguration.put(RegistrationRequest.HUB_PORT, 4444);
                nodeConfiguration.put(RegistrationRequest.PORT, 5555);

                URL remoteURL = new URL("http://" + "192.168.100.66" + ":" + 5555);
                nodeConfiguration.put(RegistrationRequest.PROXY_CLASS, "org.openqa.grid.selenium.proxy.DefaultRemoteProxy");
                nodeConfiguration.put(RegistrationRequest.MAX_SESSION, 1);
                nodeConfiguration.put(RegistrationRequest.CLEAN_UP_CYCLE, 2000);
                nodeConfiguration.put(RegistrationRequest.REMOTE_HOST, remoteURL);
                nodeConfiguration.put(RegistrationRequest.MAX_INSTANCES, 1);

                req.setConfiguration(nodeConfiguration);

                remote = new SelfRegisteringRemote(req);
                remote.startRemoteServer();
                remote.startRegistrationProcess();

同じ結果、別のコンピューターハブで実行しようとすると、登録プロセスが実行されます。INFO-ノードをハブに登録しています:http://192.168.100.66:4444 / grid / register

なぜですか?またはそれを行う方法。

4

2 に答える 2

1

私は自分の問題を理解しましたが、それは本当に簡単に修正できます。私のコードでは

URL remoteURL = new URL("http://" + "192.168.100.66" + ":" + 5555);

IPアドレスをハブのIPアドレスではなく、ローカルのIPアドレスに置き換えるだけで、うまくいきました。これは奇妙な原因です。私はこのコードをオンラインのどこかから取得し、彼はIPの変数を持っていました。これは、remoteURLとHUB_HOSTでも同じでした。

于 2012-11-22T19:34:05.183 に答える
0

良い。あなたに適しているかどうかはわかりませんが、私のプロジェクトで使用しているアプローチを共有したいと思います。192.168.4.52IPとseleniumstanadloneサーバーが実行されているリモートマシンがあります。ローカルで入手したすべてのセレンテストスイート。したがって、リモートマシンでセレンテストスイートを実行するには、ローカルマシンのBaseSeleniumTest.javaで次の設定を使用するだけです。

....
@BeforeClass
    public static void firefoxSetUp() throws MalformedURLException {

          DesiredCapabilities capability = DesiredCapabilities.firefox();


        driver = new RemoteWebDriver(new URL("http://192.168.4.52:4444/wd/hub"), capability);

        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
        driver.manage().window().setSize(new Dimension(1920, 1080));
    }
    @Before
    public void homePageRefresh() throws IOException {

        driver.manage().deleteAllCookies();
        driver.get(propertyKeysLoader("login.base.url"));
    }


    @AfterClass
    public static void closeFirefox(){
        driver.quit();
    }

ここで文字列

driver = new RemoteWebDriver(new URL("http://192.168.4.52:4444/wd/hub"), capability);

セレンテストサイトを実行するマシンのIPを示します。java -jar selenium-server-standalone-2.26.0.jar テストスイートを実行する前に、cmdで次のコマンドを使用してリモートマシンでサーバーを起動して います。お役に立てば幸いです。

于 2012-11-21T17:11:54.193 に答える