硒和无头环境
Posted
技术标签:
【中文标题】硒和无头环境【英文标题】:Selenium and Headless Environment 【发布时间】:2011-05-19 03:42:45 【问题描述】:我最近在 Red Hat 服务器上安装了 Python 2.7、Robot Framework 和 Selenium 库(我仍然不知道是否成功...),以便在 Web 应用程序上运行一些测试。
所以我尝试了一个使用 Robot Framework 的简单测试用例,看看 Selenium 库是否正常工作,只是为了打开一个网页,仅此而已......
根据 ps 的结果,Selenium Server 已启动并运行,Firefox 二进制文件在 PATH 中...
从机器人框架运行测试用例(使用 pybot testcasename.tsv)我得到一个异常:
错误:将屏幕截图捕获到字符串时出现问题:java.awt.AWTException:无头环境
那么,什么是无头环境?有没有人知道是否还有其他需要安装或配置的东西?
【问题讨论】:
对于多年后关注这一点的每个人:现在有一些可编写脚本的无头浏览器。最受欢迎的可能是 PhantomJS:phantomjs.org。 【参考方案1】:使用 X 虚拟帧缓冲区 (Xvfb):
我们可以使用 xvfb 为 selenium 创建一个无头环境(例如,通过 SSH 运行)。
说明:
使用以下选项启动xvfb
:
$ Xvfb :89 -ac -noreset
(其中:89
是创建的虚拟“显示”)。
然后,将DISPLAY
变量设置为这个虚拟显示器:
$ export DISPLAY=:89
此时,我们可以根据需要运行 selenium 服务器。示例如下。
运行服务器 Java 存档:
$ java -jar selenium-server.jar
在 Python 中:
from selenium import webdriver
driver = webdriver.Firefox()
...
【讨论】:
你是个天才!谢谢,-ac -noreset
也解决了我的问题。现在我需要弄清楚,为什么 Firefox 在我的构建机器上没有任何字体.. 嗯。
另外:我发现github.com/jordansissel/xdotool/blob/master/t/ephemeral-x.sh 在处理启动/停止 X 服务器和并行构建时非常方便。【参考方案2】:
a simple Robot library 就是为了这个目的。
【讨论】:
以上是关于硒和无头环境的主要内容,如果未能解决你的问题,请参考以下文章
如何在无头 wordpress 环境中确保图像请求的 CORS?
java.awt.AWTException:java.awt.Robot.(Robot.java:94) 的无头环境 [重复]