Selenium 使用音频时Docker中Firefox中的getUserMedia不工作

Selenium 使用音频时Docker中Firefox中的getUserMedia不工作,selenium,firefox,docker,webrtc,getusermedia,Selenium,Firefox,Docker,Webrtc,Getusermedia,在Docker中使用Firefox 52+时,我体验到WebRTC的getUserMedia函数的一种奇怪行为。复制它的步骤是: 1) 在Docker中运行Selenium中心: docker run --rm --name selenium-hub -p 4444:4444 selenium/hub:3.4.0 2) 在中心注册Firefox浏览器: docker run --rm --link selenium-hub:hub -p 5555:5555 -p 5900:5900 selen

在Docker中使用Firefox 52+时,我体验到WebRTC的
getUserMedia
函数的一种奇怪行为。复制它的步骤是:

1) 在Docker中运行Selenium中心:

docker run --rm --name selenium-hub -p 4444:4444 selenium/hub:3.4.0
2) 在中心注册Firefox浏览器:

docker run --rm --link selenium-hub:hub -p 5555:5555 -p 5900:5900 selenium/node-firefox-debug:3.4.0
注1:此命令使用节点firefox映像的调试版本,因为我们希望使用VNC连接到浏览器(在容器中)

注2:此版本(3.4.0)使用Firefox53。这个问题在Firefox 52(即52、53、54)之后也会发生,但在Firefox 51(节点Firefox debug:3.1.0)中不会发生

3) 使用VNC客户端连接到浏览器(Linux中的URL:vnc://127.0.0.1:5900,密码:secret)

4) 强制在停靠的浏览器中使用假媒体。这可以通过在Firefox的高级配置中设置配置键
media.navigator.streams.fake
(tab
about:config
)来实现:

5) 在Docker中打开Firefox中的。例如,工程罚款:

我检查此演示是否正常,因为
mediaConstraints
中的音频标志设置为false

var constraints = window.constraints = {
  audio: false,
  video: true
};
尽管如此,任何其他将音频标志设置为true的演示都将不起作用,
getUserMedia
函数将被暂停

奇怪的是,这种行为只能在Docker中重现,也就是说,任何直接在主机上运行的Firefox版本都可以正常工作。这里似乎有某种bug,但我不确定是哪个部分


问题出在哪里?码头工人?Firefox?

我们在travis ci上运行adapter.js时遇到同样的问题。解决方案如图所示——您需要启动pulseaudio