我在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 ...
,所以我也可以使用多个显示。
有什么建议吗?
答案 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