我正在使用 protractor 和 selenium 与 浏览器堆栈 并尝试自动化 webrtc web 应用程序,我需要摆脱浏览器请求许可并使用假流而不是 chrome 中提供的真实相机和麦克风.
我尝试过使用这些选项,但它们都不起作用。
选项1:
var capabilities = {
'browserName': 'iPhone',
'device': 'iPhone 6S',
'realMobile': 'true',
'os_version': '11.4',
"media.navigator.permission.disabled": true,
"media.navigator.streams.fake": true
};
选项2
var capabilities = {
'browserName': 'iPhone',
'device': 'iPhone 6S',
'realMobile': 'true',
'os_version': '11.4',
'safariOptions': {
'args': ["--use-fake-ui-for-media-stream", '--use-fake-device-for-media-stream']
}
};
对于我使用的构建选项:
var driver = new webdriver.Builder()
usingServer('http://hub-cloud.browserstack.com/wd/hub').
withCapabilities(capabilities).
build();
目前,没有这种 BrowserStack 特定的自定义功能可以在 Safari 上传递虚假媒体流。此外,Safari 浏览器尚不支持传递假流。您可以阅读以下问题:
https://github.com/web-platform-tests/results-collection/issues/125
https://github.com/web-platform-tests/wpt/issues/7424
此外,Safari 浏览器似乎不支持此类参数。我在 SafariOptions 示例中回顾了相同的内容here
我的开发项目需要一个类似的解决方案。事实证明,最简单的方法是安装免费的 OBS Studio - 它也适用于 Mac。 安装后,它可以创建一个虚拟网络摄像头。然后网络浏览器会将其视为真正的相机。 您可以播放任何视频,它将显示为真实的相机输入流。