这是我实例化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。
答案 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的端口号
希望这会有所帮助!!