2

Web ドライバーをインスタンス化するコードは次のとおりです。

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 をRemoteWebDriver への各 chromedriver インスタンスへのポート。

4

3 に答える 3

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());
于 2015-05-25T17:38:35.273 に答える
0

これを行う最善の方法は、ChromeDriverService を使用して 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(service);ます。

于 2016-12-26T06:38:20.363 に答える
-2

テストを実行する必要があるリモート マシンにログインし、タスク マネージャを開いて、chromedriver が開始されたポート番号を確認してください。

お役に立てれば !!

于 2017-09-27T01:32:10.467 に答える