Html 在chrome驱动程序中播放DRM内容

Html 在chrome驱动程序中播放DRM内容,html,google-chrome,selenium,Html,Google Chrome,Selenium,我正在为一个播放DRM内容的HTML5播放器编写一些selenium测试,当我手动测试时,该播放器在Chrome中运行良好,但是如果我运行测试用例,最新的Chrome驱动程序中不会加载或播放任何内容 是因为drm内容未被授权在chrome驱动程序中播放还是其他原因 我在运行用selenium编写的其他函数的测试时没有问题。 有什么想法吗?Chromedriver启动Chrome时默认使用了--禁用组件更新开关,这将禁用NaCl(本机客户端)支持,而加载DRM模块(例如Widevine模块化DRM

我正在为一个播放DRM内容的HTML5播放器编写一些selenium测试,当我手动测试时,该播放器在Chrome中运行良好,但是如果我运行测试用例,最新的Chrome驱动程序中不会加载或播放任何内容

是因为drm内容未被授权在chrome驱动程序中播放还是其他原因

我在运行用selenium编写的其他函数的测试时没有问题。
有什么想法吗?

Chromedriver启动Chrome时默认使用了
--禁用组件更新开关,这将禁用NaCl(本机客户端)支持,而加载DRM模块(例如Widevine模块化DRM)则需要该支持

为了避免这种情况,您需要告诉驱动程序不要使用此开关启动Chrome,方法是使用
excludeSwitchs
选项构建驱动程序,并指定
disable component update
参数。例如(JS):

var-webdriver=require('selenium-webdriver');
var chrome=require(“selenium webdriver/chrome”);
var capabilities=新的webdriver.capabilities.chrome();
变量色度选项={
'args':['--user data dir=C:/ChromeProfile'],//从预先配置的Chrome配置文件开始
'ExcludeSwitchs':['disable-component-update']//停止中断本机客户端支持
};
能力集('chromeOptions',chromeOptions);
var driver=new webdriver.Builder()。
有能力(能力)。
build();

司机,上车http://...');我正在发布Chainik的java版本的答案,作为使用java的人的参考,如果有任何错误,请告诉我

            ChromeOptions options = new ChromeOptions();
            List<String> list = new ArrayList<String>();
            list.add("disable-component-update");
            options.setExperimentalOption("excludeSwitches", list);
            options.addArguments("user-data-dir=/Users/myname/Library/Application Support/Google/Chrome/Default");

            java.lang.System.setProperty("webdriver.chrome.driver","/usr/bin/chromedriver");
            Webdriver driver = new ChromeDriver(options);
ChromeOptions选项=新的ChromeOptions();
列表=新的ArrayList();
添加(“禁用组件更新”);
选项。设置实验选项(“排除开关”,列表);
addArguments(“user data dir=/Users/myname/Library/Application Support/Google/Chrome/Default”);
setProperty(“webdriver.chrome.driver”,“/usr/bin/chromedriver”);
Webdriver=新的ChromeDriver(选项);

下面是一个关于chromedriver功能和选项的示例。

如果您无法获得@Chainik的答案,请尝试一下。这对我有用

根据,你可以通过做一些事情来解决这个问题

使用这些命令行参数从终端/命令提示符手动启动chrome
--
google chrome--user data dir=/path/to/any/custom/directory/home/user/Desktop/Chromedir--profile directory=“profile 1”--远程调试端口=7878

  • 确保“概要文件1”已存在于同一个--user data目录中(确保usre概要文件1具有必要的chrome://components/ 手动启动时运行Netflix)
  • 您可以使用任何自由端口代替7878 验证是否正在运行并返回值。 现在使用下面的代码通过chromedriver连接到远程调试端口=7878 验证chrome://components/
  • 我把我的放进了一个.bat文件中,但你也可以对bash脚本或任何东西做同样的操作:

    C:/Program Files (x86)/Google/Chrome/Application/chrome.exe --user-data=c:/temp/chromeprofile --profile-directory="Profile 1" --remote-debugging-port=7878
    
    然后在代码中设置调试器地址以使用浏览器:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    cr_options = Options()
    
    # This line is where the "magic" happens.
    cr_options.add_experimental_option('debuggerAddress','127.0.0.1:7878')
    
    browser = webdriver.Chrome(chrome_options=cr_options)
    browser.get('https://www.google.com')
    browser.get('chrome://components/')
    

    这很晚了,但可能会帮助其他人。我不用无头浏览器就能绕过这个问题,播放视频

    在Python中

           options = Options()
           options.headless = False
           webdriver.Chrome(executable_path='path/to/chromedriver', options=options)
    

    在测试结束后关闭浏览器之前,请检查控制台(F12)是否有任何错误,如果有,请复制到此处。@peetya我没有任何错误,内容只是没有显示出对延迟响应的担忧,我终于有机会再次处理此问题。我确实喜欢你的帖子,但内容仍然没有播放。