硒和无头环境

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 就是为了这个目的。

【讨论】:

以上是关于硒和无头环境的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 7 上关闭无头图形环境

如何在无头 wordpress 环境中确保图像请求的 CORS?

java.awt.AWTException:java.awt.Robot.(Robot.java:94) 的无头环境 [重复]

chrome设置为无头浏览的模式,以便放linux上运行

chrome设置为无头浏览的模式,以便放linux上运行

Anaconda 硒和铬