【发布时间】:2021-02-15 11:08:30
【问题描述】:
当尝试在 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 驱动程序
所以观察是
- 在 GUI 模式下(无头)chrome 正在为我的 PC 中的所有接口生成 ice 候选,并且 它与远程对等点连接良好
- 在无头模式下,它仅生成 1 个 ICE 候选对象,其类型为主机,mdns 示例:3
92f939d-6507-45e1-87da-19b63fb76a9e.local,并且不再生成,并且由于我使用的远程对等方不兼容解析 mdns,ice 连接失败
为了克服我添加了一个 STUN 服务器支持,其中 peerconnection 配置为使用示例
var peerConnectionConfig = { 'iceServers': [{ 'url': 'stun:192.189.67.565:3478' }], 'bundlePolicy': 'max-bundle'};
我可以通过wireshark清楚地看到,发送STUN绑定请求并发送成功映射的绑定成功响应地址(192.185.46.57)作为回报,但它不是chrome 使用此 headless 模式生成额外的候选冰
我想知道在无头模式下使用 chrome-webrtc-ice 连接是否需要任何其他/不同的配置?
谢谢
【问题讨论】:
-
无头不支持偏好
标签: selenium google-chrome selenium-webdriver webrtc stun