【问题标题】:I need to get the port of the chromedriver that I have instantiated in Selenium我需要获取我在 Selenium 中实例化的 chromedriver 的端口
【发布时间】:2015-05-21 04:53:01
【问题描述】:

这是我实例化 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 的多个实例,然后通过它带有到 RemoteWebDriver 的每个 chromedriver 实例的端口的 URL。

【问题讨论】:

    标签: java selenium openfin


    【解决方案1】:

    我假设您正在使用 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());
    

    【讨论】:

    • 是的,这就是我想要做的,但这仅返回有关节点的信息,而不是已运行的 chromedriver 实例。我想获得可以连接到 chromeDriver newDriver = new RemoteWebDriver(new URL("http://" + GRID_IP + ":" + CHROMEDRIVER_PORT), capabilities); 的端口
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      希望这会有所帮助!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多