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

同样的结果,当我尝试在另一个计算机集线器上运行时,它会提交注册过程。信息 - 将节点注册到集线器: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

出色地。不确定是否适合您,但我想分享我在项目中使用的方法。我有一台 IP 为 192.168.4.52 的远程机器和运行在它上面的 selenium stanadlone 服务器。我在本地获得的所有硒测试套件。因此,要在远程机器上运行我的 selenium 测试套件,我只需在本地机器上的 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 回答