我想通过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);
有关如何正确授予权限的任何想法?
答案 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.现在,使用下面的代码
将此用户数据目录传递给chromedriverJava代码 -
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;);
此外,我认为该网站需要使用单引号,否则它无法解析。
试一试。