4

我在 Java 中用 Selenium 2 开发了一个使用 Firefox 引擎的测试单元。

部署机器没有显示,所以我使用 Xvfb 来创建它。不幸的是,这迫使我使用DISPLAY=:0 java -jar xxx.jar. 我搜索了 selenium javadoc 并搜索了一些资源,但找不到 java 用来启动 Firefox 的方法,女巫是我的目标,让 java 使用相同的方法启动 firefox DISPLAY=:0 firefox ...

长话短说:我必须这样做DISPLAY=:0 java -jar xxx.jar,但我想用 javaDISPLAY=:XX firefox ...代替,firefox ...所以我也可以使用多个显示器。

有什么建议吗?

4

4 回答 4

5

我们实际上在生产中使用 Xvfb 和 Selenium 以及十几个连续工作的 Firefox 实例。我们使用xvfb-run java -jar xxx.jarwhich select a free display 来运行该程序的所有 firefox 实例。如果您关心屏幕截图,您可以只使用一个显示器,而仍然有十几个 Firefox 同时为不同的网站截取屏幕截图

我们将它封装在一个 shell 脚本下,这是透明的。

如果你真的希望每个 selenium 服务器都有自己的显示,你可以在配置中指定的浏览器字符串中覆盖它。只需制作一个执行此操作的 shell 脚本xvfb-run /usr/bin/firefox并将此脚本传递给您的配置。这应该够了吧

好好测试

于 2012-06-15T12:53:29.780 回答
2

We have made an bash file which sets the display and then starts firefox. We have put it into the path under the name firefox, so selenium finds it using which to locate the firefox binary.

于 2012-06-12T07:29:32.720 回答
2

编写一个“代理”程序,使用所需的参数执行 shell;然后将“webdriver.firefox.bin”属性指向您的代理程序。我不认为这可能是一个 java 程序,因为它是通过 java 命令执行的。它可能必须是本机代码,可能是 C 和类似“system ("DISPLAY=:XX firefox ...");”的东西

于 2012-06-13T11:18:30.493 回答
0

您应该查看本手册,我前一段时间使用它来做同样的事情:

http://www.alittlemadness.com/2008/03/05/running-selenium-headless/

TLDR;

$ export DISPLAY=:0
$ firefox
于 2012-05-29T14:42:14.507 回答