Selenium是否可以在没有GUI的情况下使用Ubuntu

Jim*_*ire 3 ubuntu selenium codeception

我在各种云平台上使用Codeception,例如Amazon AWS和Cloud 9.默认情况下,它们都没有GUI.我的问题是,你能在这种类型的系统上运行Selenium吗?或者我需要以某种方式获得GUI?

SiK*_*ing 6

Selenium只是一个库,因此如果您在配备GUI的系统上运行它,它并不特别在意.您可能会问的是:如果我使用Selenium打开浏览器,该浏览器是否可以在没有GUI的系统上运行.答案是:这取决于!

有无头浏览器:浏览器也没有GUI组件.HtmlUnit与Selenium一起打包.另一个流行的浏览器是PhantomJS,它有第三方Selenium绑定库,名为GhostDriver.就个人而言,我会避免这两个!HtmlUnit使用当前桌面浏览器都不支持的JavaScript引擎,因此测试不是很可靠.GhostDriver 已经维护了2年,因此也会产生不可靠的结果.PahntomJS绝对是一个选项,因为它使用WebKit-- Safari和Chrome浏览器中的引擎,但您必须编写自己的API.

大多数系统都允许您拥有虚拟GUI.你提到了Ubuntu,这是一个Debian派生词.网上有几个教程告诉你如何安装Xvfb,其中大部分是不完整或错误的.在Debian上你安装了这样的无头浏览器:

  1. 安装Xvfb: apt-get install xvfb
  2. 安装浏览器.假设您使用的是Debian服务器,则无法使用apt-get安装类似Firefox的内容,因为存储库不存在.取而代之的是像"Firefox离线安装"或者您想要使用的任何浏览器,然后wget在您的服务器上使用以获取包.
  3. 在某个地方解压缩包/usr/local/lib,然后从/usr/local/bin启动浏览器的二进制文件创建一个软链接.
  4. 现在尝试启动浏览器无头.例如,对于Firefox,你会尝试:xvfb-run firefox.这可能会产生一些错误,您必须修复.在我的情况下,我错过了libdbus-glib-1-2我可以使用apt-get安装的库.
  5. 此时,您需要在运行Selenium测试之前启动Xvfb.大多数CI服务器都有一个Xvfb插件,或者你可以从命令行执行:Xvfb :99 &.有关其他信息,请参阅文档.

  • 这个答案越来越受欢迎,所以我想我应该补充一点:Chrome 和 Firefox 现在支持开箱即用的无头模式,不需要 Xvfb。从 Selenium 3.6.0 开始,Selenium 支持这一点,没有任何特别之处。 (3认同)