首页 > 解决方案 > 在 Serenity 中禁用 chromedriver V75 的 w3c 选项

问题描述

将 chrome 和相应的 chromedriver 更新到版本 75 后,当相应的名称包含特殊字符时,我无法使用 findby name:

  @FindBy(name = "head['such']")
private WebElement searchWordInput;

经过一些快速搜索后,由于默认启用了 w3c 模式,我发现该线程面临同样的问题: https ://groups.google.com/forum/#!msg/selenium-users/TwWf4uwYB5A/5XmNBb7IDAAJ

为了让我们的测试运行,我想暂时禁用 chrome 的 w3c 模式,因为有一个长期解决方案(例如 chromedriver 或 selenium 修复)。

这个答案给出了一个如何在java中作为代码执行的示例:How to turn off w3c in chromedriver to address the error unknown command: Cannot call non W3C standard command while in W3C

在我的情况下,我没有在 java 中配置 chrome 驱动程序,而是在我们的测试中配置用户 serenity 的 @Managed 注释:

@Managed(driver = "chrome")
WebDriver driver;

如果可能的话,我不想自己配置驱动程序,因为这会导致重构许多测试。

不幸的是,我无法弄清楚如何平静地做到这一点。我尝试的是在 serenity.conf 文件中指定它,如下所示:

chrome {
    capabilities {
        chromeOptions {
            "w3c" = false
        }
    }
}

不知何故,宁静拿起了我的配置,但我认为不是正确的方式:

[main] INFO net.serenitybdd.core.webdriver.driverproviders.ProvideNewDriver - Driver capabilities: Capabilities {acceptInsecureCerts: false, browserName: chrome, chromeOptions.w3c: false, goog:chromeOptions: {args: [--enable-automation, --test-type], extensions: []}, platform: ANY, version: }

如何在 serenity.conf 或 serenity.properties 文件中禁用 chrome w3c 模式?

标签: javaseleniumselenium-chromedriverw3cserenity-bdd

解决方案


推荐阅读