Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要获取我在Selenium中实例化的chromedriver的端口_Java_Selenium_Openfin - Fatal编程技术网

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

Java 我需要获取我在Selenium中实例化的chromedriver的端口,java,selenium,openfin,Java,Selenium,Openfin,下面是我用来实例化webdriver的代码 System.setProperty("webdriver.chrome.driver", "D:\chromedriver.exe"); DesiredCapabilities capabilities = DesiredCapabilities.chrome(); WebDriver driver = new ChromeDriver(capabilities); 现在,我想获取启动chromedriver的端口。 实际上,我正在尝试让OpenF

下面是我用来实例化webdriver的代码

System.setProperty("webdriver.chrome.driver", "D:\chromedriver.exe");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
WebDriver driver = new ChromeDriver(capabilities);
现在,我想获取启动chromedriver的端口。 实际上,我正在尝试让OpenFin上的自动化工作,它使用RemoteWebDriver使用ChromeDriver来驱动他们的应用程序

以下是他们Git的链接:


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

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

我假设您正在使用Selenium网格在远程机器上运行并行测试。 因此,您可以向网格发送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

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(服务)

执行此操作的最佳方法是使用ChromeDriver服务启动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(服务)

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


希望这有帮助

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


希望这有帮助

是的,这就是我想要做的,但是这只返回关于节点的信息,而不是已经运行的chromedriver实例。我想获得可以连接到chromeDriver
newDriver=new RemoteWebDriver(新URL(“http://“+GRID_IP+”:“+chromeDriver_port”),功能的端口是的,这就是我想要做的,但是这只返回关于节点的信息,而不是已经运行的chromedriver实例。我想获得可以连接到chromeDriver
newDriver=new RemoteWebDriver(新URL(“http://“+GRID_IP+”:“+chromeDriver_port”),功能的端口