如何使用Java将数据设置为使用Java的Selenium Chrome驱动程序的ChromeOptions?

时间:2018-02-09 23:57:14

标签: java google-chrome selenium

我尝试向ChromeOptions标记autoplay-policy - Document user activation is required注入块自动播放视频以获得测试效果。

我有几次尝试。但没有人不工作。

ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = Maps.newHashMap();
prefs.put("--autoplay-policy", "Document user activation is required.");
options.setExperimentalOption("prefs", prefs);

或者

options.setCapability("--autoplay-policy", "Document user activation is required.");

我正在使用pup-up菜单尝试使用网址chrome://flags/#autoplay-policy来设置Document user activation。但是当Selenium点击RELAUNCH NOW来应用我的测试崩溃时。我需要在启动Chrome之前注入它。

enter image description here

我正在寻找在chromedriver开始时屏蔽自动播放视频的机会。请帮我解决这个问题。谢谢。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,无法通过原生选项“autoplay-policy”阻止自动播放视频。同时它不起作用,我使用chrome插件“禁用HTML5自动播放”启动Chrome。我附上了从Selenium API管理此插件的代码:

public class PluginHTML5Autoplay extends PluginChrome {

    private final String fileName = "html5autoplay_0_6_2.crx";
    private static final String PageSetup = "chrome-extension://efdhoaajjjgckpbkoglidkeendpkolai/options.html";
    private static final String XPathSelect = "//select[@id='default-mode']";

    @Override
    public void addPluginToChrome(ChromeOptions options) throws Exception {
        super.addPluginToChrome(options, this.fileName);
    }

    public static void disableAutoplay(WebDriver driver) {
        driver.get(PageSetup);
        new Select(driver.findElement(By.xpath(XPathSelect))).selectByVisibleText("Disable autoplay");
    }

    public void disableNothing(WebDriver driver) {
        driver.get(PageSetup);
        new Select(driver.findElement(By.xpath(XPathSelect))).selectByVisibleText("Disable nothing");
    }
}

使用此插件启动Chrome时的默认选项是“禁用自动播放”。因此,您只需要管理插件,以防您需要激活自动播放。