Java 我需要获取我在Selenium中实例化的chromedriver的端口
下面是我用来实例化webdriver的代码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
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)的URLWebDriver 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)的URLWebDriver driver=new RemoteWebDriver(service.getUrl(),DesiredCapabilities.chrome())
或者我们可以直接在ChromeDriver构造函数中传递服务WebDriver driver=new ChromeDriver(服务)代码>请登录到需要执行测试的远程计算机,并打开任务管理器以查看启动chromedriver的端口
希望这有帮助 请登录到需要执行测试的远程计算机,并打开任务管理器以查看启动chromedriver的端口
希望这有帮助 是的,这就是我想要做的,但是这只返回关于节点的信息,而不是已经运行的chromedriver实例。我想获得可以连接到chromeDrivernewDriver=new RemoteWebDriver(新URL(“http://“+GRID_IP+”:“+chromeDriver_port”),功能的端口代码>是的,这就是我想要做的,但是这只返回关于节点的信息,而不是已经运行的chromedriver实例。我想获得可以连接到chromeDrivernewDriver=new RemoteWebDriver(新URL(“http://“+GRID_IP+”:“+chromeDriver_port”),功能的端口代码>