2

这是我实例化 webdriver 的代码。

System.setProperty("webdriver.chrome.driver", "D:\chromedriver.exe");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
WebDriver driver = new ChromeDriver(capabilities);

现在,我想获取启动 chromedriver 的端口。我实际上正在尝试使 OpenFin 工作自动化,它使用 RemoteWebDriver 使用 ChromeDriver 驱动他们的应用程序。

这是他们的 Git 的链接:https ://github.com/openfin/hello-openfin-selenium-java-example

我面临的问题是,由于我自己必须在远程机器上运行测试,并且并行运行多个测试,我需要能够在远程机器上运行 chromedriver 的多个实例,然后将其 URL 与每个 chromedriver 实例的端口到 RemoteWebDriver。

4

3 回答 3

0

我假设您使用 Selenium Grid 在远程机器上运行并行测试。因此,您可以向网格发送 http 请求并获取浏览器的端口。resp 变量将保存有关节点的信息。比如ip和端口。

HttpHost host = new HttpHost(GRID_IP, GRID_PORT);
        HttpClient client = HttpClientBuilder.create().build();
        URL testSessionApi = new URL("http://" + GRID_IP + ":GRID_PORT/grid/api/testsession?session="
                + driver.getSessionId());
        BasicHttpEntityEnclosingRequest r = new BasicHttpEntityEnclosingRequest("POST",
                testSessionApi.toExternalForm());
        HttpResponse response = client.execute(host, r);
        String resp = EntityUtils.toString(response.getEntity());
于 2015-05-25T17:38:35.273 回答
0

最好的方法是使用 ChromeDriverService 来启动 ChromeDriver

ChromeDriverService service = new ChromeDriverService.Builder()
    .usingChromeDriverExecutable(new File("path/to/my/chromedriver"))
    .usingAnyFreePort()
    .build();
service.start();

然后使用service.getUrl();可以很容易地获得可用于启动 ChromeDriver(用于 RemoteWebDriver)的 URL,WebDriver driver = new RemoteWebDriver(service.getUrl(), DesiredCapabilities.chrome());或者我们可以直接在 ChromeDriver 构造函数中传递服务WebDriver driver = new ChromeDriver(service);

于 2016-12-26T06:38:20.363 回答
-2

请登录需要执行测试的远程机器打开任务管理器查看启动chromedriver的端口号

希望这可以帮助 !!

于 2017-09-27T01:32:10.467 回答