我需要获得我在Selenium中实例化的chromedriver的端口

时间:2015-05-21 04:53:01

标签: java selenium openfin

这是我实例化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。

3 个答案:

答案 0 :(得分: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());

答案 1 :(得分:0)

执行此操作的最佳方法是使用ChromeDriverService启动ChromeDriver

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

然后使用service.getUrl();可以轻松获取可用于启动ChromeDriver(适用于RemoteWebDriver)WebDriver driver = new RemoteWebDriver(service.getUrl(), DesiredCapabilities.chrome());的网址,或者我们可以直接在ChromeDriver构造函数WebDriver driver = new ChromeDriver(service);中传递该服务。

答案 2 :(得分:-2)

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

希望这会有所帮助!!