使用 w3c webdriver api 启动 chromedriver 会话

Start a chromedriver session using w3c webdriver api

我正在尝试使用 chromedriver 和 w3c webdriver API 启动一个 Chromium 会话,我向 http://localhost:9515/session 发送了一个 POST 请求和正文

{
    "capabilities": {
        "alwaysMatch": {
            "platformName": "linux",
            "chrome:browserOptions": {
                "binary": "/usr/bin/chromium",
                "args": ["--start-page=about:blank"]
            }
        },
        "firstMatch": [
            {"browserName": "chrome"}
        ]
    }
}

然后我收到下一个回复

{
    "sessionId": "b1a413df152017cd223dbabbcf1d2ffe",
    "status": 33,
    "value": {
        "message": "session not created exception: Missing or invalid capabilities (Driver info: chromedriver=2.40.565383 (76257d1ab79276b2d53ee976b2c3e3b9f335cde7),platform=Linux 4.14.47-1-MANJARO x86_64)"
    }
}

哪些功能缺失或无效?

chromedriver(至少从 2.41 版开始)根本不支持 W3C WebDriver API。

chromedriver 所需的缺失功能是capabilities.alwaysMatch.goog:chromeOptions.w3c: true,即

{ "capabilities" : { "alwaysMatch" : { "goog:chromeOptions" : { "w3c" : true } } } }

这是 chromedriver 的缺陷。如果你想试验 W3C WebDriver 协议,你可以使用 geckodriver (firefox),它对 W3C WebDriver API.

有近乎完美的支持

Java代码:

    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("w3c", true);
    new ChromeDriver(options);