通过Selenium Chromedriver自动授予Chrome 48中视频和音频的访问权限

时间:2016-01-28 16:51:05

标签: java google-chrome selenium selenium-chromedriver

我想通过Chromedriver功能自动授予Chrome中视频和音频的访问权限。

基于this(很老)回答我尝试了以下内容:

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<>();

// with this chrome still asks for permission
prefs.put("profile.managed_default_content_settings.media_stream", 1);
prefs.put("profile.managed_default_content_settings.media_stream_camera", 1);
prefs.put("profile.managed_default_content_settings.media_stream_mic", 1);

// and this prevents chrome from starting
prefs.put("profile.content_settings.exceptions.media_stream_mic.https://*,*.setting", 1);
prefs.put("profile.content_settings.exceptions.media_stream_mic.https://*,*.last_used", 1);
prefs.put("profile.content_settings.exceptions.media_stream_camera.https://*,*.setting", 1);
prefs.put("profile.content_settings.exceptions.media_stream_camera.https://*,*.last_used", 1);

// and this prevents chrome from starting as well
prefs.put("profile.content_settings.pattern_pairs.https://*,*.media_stream.video", "Allow");
prefs.put("profile.content_settings.pattern_pairs.https://*,*.media_stream.audio", "Allow");

options.setExperimentalOption("prefs", prefs);
capabilities.setCapability(ChromeOptions.CAPABILITY, options);

有关如何正确授予权限的任何想法?

3 个答案:

答案 0 :(得分:2)

面对类似问题,解决了这个问题:

ChromeOptions options = new ChromeOptions();
options.addArguments("--use-fake-ui-for-media-stream=1");
driver = new ChromeDriver(options);

您也可以使用以下方法更改默认相机:

Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("media.default_video_capture_Device", "\\\\?\\root#media#0002#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global");
options.setExperimentalOption("prefs", prefs);

可以从设置窗口(使用开发工具检查)或Chrome目录中的首选项文件获取相机代码。

答案 1 :(得分:1)

存在安全限制,因为默认情况下无法设置媒体首选项。 但是,我们通过在首选项中启用所需设置来解决方法(如#1中所述) 1.使用&#34; / path / to / chrome --user-data-dir = / give / some / path / for / profileDir&#34;手动运行chrome。 2.转到所需的URL,其中显示视频允许或阻止弹出消息 3.单击“允许”按钮 4.转到chrome:// settings / content - &gt;点击媒体部分下的管理例外按钮 - &gt;在这里,您会发现该URL已添加到管理例外框中 5.现在,使用下面的代码

将此用户数据目录传递给chromedriver

Java代码 -

ChromeOptions options = new ChromeOptions(); 
options.addArguments("user-data-dir=/path/to/the/saved/profileDir");
WebDriver driver = new ChromeDriver(options);

答案 2 :(得分:0)

我认为它需要特定于网站,以下内容适用于我:        prefs.put(&#34; profile.content_settings.exceptions.media_stream_camera。&#39; https://somewebsite.com:443&#39; .setting&#34;,&#34; 1&#34;);         prefs.put(&#34; profile.content_settings.exceptions.media_stream_mic。&#39; https://somewebsite.com:443&#39; .setting&#34;,&#34; 1&#34;);

此外,我认为该网站需要使用单引号,否则它无法解析。

试一试。