【问题标题】:How to run selenium server sessions on different xvfb screens?如何在不同的 xvfb 屏幕上运行 selenium 服务器会话?
【发布时间】:2013-08-23 17:27:15
【问题描述】:

我的问题是如何从 SeleniumServer 浏览器实例中获取隔离的视频流。让我解释一下。

我在 Ubuntu Server 机器上运行 Selenium Server 集线器,在同一台服务器上运行 Selenium Server 节点,因此我使用 xvfb 的“无头”Selenium 模式。我像这样运行节点:DISPLAY=:99 java -jar selenium-server-standalone.jar -role node -hub http://localhost:4444/grid/register

然后我想获得在那里运行的测试的视频流,所以我安装了连接到 xvfb 虚拟显示器的 x11server,之后我可以使用 VNC 连接那些远程服务器,我看到我的测试正在处理。问题是节点内的所有浏览器实例都呈现在同一个虚拟显示器上(#99),当我需要同时运行多个测试时,我看到许多浏览器实例一个接一个地覆盖。但我想记录错误测试视频流,所以我不能这样做。所以我需要有概率分别连接到每个浏览器的虚拟显示器。

我认为我可以通过调整 xvfb 服务器以强制它为每个客户端(在我的情况下为浏览器实例)创建隔离的虚拟显示或屏幕(xvfb 支持多屏幕,不是吗?)来解决这个问题。但我试图这样做,但我没有得到结果。如果有必要解决这个问题,我也可以使用另一个虚拟显示器(不是 xvfb)。

请帮我从每个浏览器实例中获取隔离的视频流 :) 非常感谢,对我的英语感到抱歉。

【问题讨论】:

  • 哇,你正在尝试做的事情真的很有趣。在你弄清楚之后,你介意分享一个 HOWTO(也许在某个博客上)吗?我认为很多 Selenium 人可能对如何做这种事情感兴趣。

标签: selenium selenium-webdriver selenium-rc selenium-grid


【解决方案1】:

使用 selenium hub,您可以在各自的 Xvfb 会话中单独添加浏览器

java -jar selenium-server-standalone-2.33.0.jar -role hub& 

然后在各自的 Xvfb 会话、DISPLAY 和端口中分别连接每个浏览器

export DISPLAY=:11
Xvfb :11 -screen 0 1024x768x16 &

java -jar selenium-server-standalone-2.33.0.jar \
   -role node \
   -port 4441
   -hub http://localhost:4444/grid/register \
   -browser "browserName=firefox,version=19,maxInstances=5"&

【讨论】:

  • 除非您通过端口号选项,否则这将不起作用。否则,2 个或更多服务无法在同一个端口 4444 上侦听。
  • 集线器位于 4444 上,但我认为客户端在其默认端口上。可以使用节点的 -port 选项指定端口。我更新了示例
【解决方案2】:

对于这种用途,您通常可以使用xvfb-run 命令(可以自动选择显示,但可以配置)

然后您可以创建一个可以执行 xvfb-run firefox 的 firefox 启动脚本,您可以将其用作 selenium firefox 启动命令(指定为 FirefoxBinary

【讨论】:

    猜你喜欢
    • 2011-07-09
    • 2011-09-05
    • 1970-01-01
    • 2016-06-07
    • 2010-10-06
    • 2017-09-01
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多