Java中的Selenium Firefox Webdriver(运行参数)

时间:2012-05-29 14:35:14

标签: java firefox unix selenium xvfb

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

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

长话短说: 我必须DISPLAY=:0 java -jar xxx.jar,但我希望java代替DISPLAY=:XX firefox ...而不是firefox ...,所以我也可以使用多个显示。

有什么建议吗?

4 个答案:

答案 0 :(得分:5)

我们实际上在生产中使用Xvfb和Selenium,并且有十几个连续工作的Firefox实例。 我们使用xvfb-run java -jar xxx.jar选择一个空闲显示来运行该程序的所有firefox实例。如果你担心屏幕截图,你可以只使用一个显示器,还有十几个Firefox同时为不同的网站截取屏幕截图

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

如果您确实希望每个selenium服务器都具有其显示,则可以在配置中指定的浏览器字符串中覆盖它。只需创建一个执行xvfb-run /usr/bin/firefox的shell脚本并将此脚本传递给您的配置。那应该是诀窍

进行良好的测试

答案 1 :(得分:2)

我们制作了一个bash文件来设置显示然后启动firefox。 我们已将其放在名为firefox的路径中,因此selenium会使用which找到它 找到firefox二进制文件。

答案 2 :(得分:2)

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

答案 3 :(得分:0)

您应该查看本手册,我前一段时间使用过这样做:

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

TLDR;

$ export DISPLAY=:0
$ firefox