当尝试在chrome-headless模式下通过selenium自动化webrtc用例时,
我配置了以下选项:
caps := selenium.Capabilities{"browserName": "chrome"}
chromePrefs := make(map[string]interface{})
chromePrefs["profile.default_content_setting_values.media_stream_mic"] = 1
chromePrefs["profile.default_content_setting_values.media_stream_camera"] = 1
chromeCaps := chrome.Capabilities{
Path: "",
Args: []string{
"--ignore-certificate-errors",
"--use-fake-device-for-media-stream",
"--use-fake-ui-for-media-stream",
"--headless",
"--no-sandbox",
"--disable-dev-shm-usage",
},
Prefs: chromePrefs,
}
caps.AddChrome(chromeCaps)在这里,我只是使用来自https://github.com/tebeka/selenium的golang selenium包装器,它位于原始java驱动程序之上。
所以观察结果是
92f939d-6507-45e1-87da-19b63fb76a9e.local和to,以及冰连接失败,因为我正在使用的远程对等程序不兼容解析mdns。
为了克服这一问题,我添加了一个电击服务器支持,配置为使用示例的对等连接。
var peerConnectionConfig = { 'iceServers': [{ 'url': 'stun:192.189.67.565:3478' }], 'bundlePolicy': 'max-bundle'};我可以通过wireshark清楚地看到,发送了眩晕绑定请求,并发送了成功映射的绑定成功响应地址(192.185.46.57),但它没有被铬用于在这种无头模式下生成额外的冰候选者。
我想知道是否有任何额外的/不同的配置必不可少的铬-webrtc-冰连接工作时,使用无头模式?
谢谢
发布于 2021-02-15 12:43:58
无头浏览器不支持首选项。
截至2021年2月
https://bugs.chromium.org/p/chromedriver/issues/detail?id=1925
无头铬不支持优惠设置。您只能使用命令行参数。
支持的参数的完整列表如下:
https://peter.sh/experiments/chromium-command-line-switches/
在这里你可以看到-眨眼-设置,
试一试
chrome_options.add_arguments('--use-file-for-fake-audio-capture=random_audio.wav')
chrome_options.add_arguments('--use-file-for-fake-video-capture=random_audio.y4m')发布于 2021-03-31 21:42:49
我觉得不管用,我自己也试过了。我相信这是一个问题:https://bugs.chromium.org/p/chromium/issues/detail?id=776649
我正在测试的应用程序证实了我在日志中的怀疑:
2021-02-31 17:27:19.240 Available media devices:
2021-02-31 17:27:19.241 : audioinput
2021-02-31 17:27:19.241 : videoinput
2021-02-31 17:27:19.241 : audiooutput
2021-02-31 17:27:19.256 Local media is not present NotSupportedError: Not supported
2021-02-31 17:27:19.256 No local media configuredhttps://stackoverflow.com/questions/66206927
复制相似问题