我在各种云平台上使用Codeception,例如Amazon AWS和Cloud 9.默认情况下,它们都没有GUI.我的问题是,你能在这种类型的系统上运行Selenium吗?或者我需要以某种方式获得GUI?
Selenium只是一个库,因此如果您在配备GUI的系统上运行它,它并不特别在意.您可能会问的是:如果我使用Selenium打开浏览器,该浏览器是否可以在没有GUI的系统上运行.答案是:这取决于!
有无头浏览器:浏览器也没有GUI组件.HtmlUnit与Selenium一起打包.另一个流行的浏览器是PhantomJS,它有第三方Selenium绑定库,名为GhostDriver.就个人而言,我会避免这两个!HtmlUnit使用当前桌面浏览器都不支持的JavaScript引擎,因此测试不是很可靠.GhostDriver 已经维护了2年,因此也会产生不可靠的结果.PahntomJS绝对是一个选项,因为它使用WebKit-- Safari和Chrome浏览器中的引擎,但您必须编写自己的API.
大多数系统都允许您拥有虚拟GUI.你提到了Ubuntu,这是一个Debian派生词.网上有几个教程告诉你如何安装Xvfb,其中大部分是不完整或错误的.在Debian上你安装了这样的无头浏览器:
安装Xvfb: apt-get install xvfb
安装浏览器.假设您使用的是Debian服务器,则无法使用apt-get安装类似Firefox的内容,因为存储库不存在.取而代之的是像"Firefox离线安装"或者您想要使用的任何浏览器,然后wget
在您的服务器上使用以获取包.
在某个地方解压缩包/usr/local/lib
,然后从/usr/local/bin
启动浏览器的二进制文件创建一个软链接.
现在尝试启动浏览器无头.例如,对于Firefox,你会尝试:xvfb-run firefox
.这可能会产生一些错误,您必须修复.在我的情况下,我错过了libdbus-glib-1-2
我可以使用apt-get安装的库.
此时,您需要在运行Selenium测试之前启动Xvfb.大多数CI服务器都有一个Xvfb插件,或者你可以从命令行执行:Xvfb :99 &
.有关其他信息,请参阅文档.