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

时间:2015-12-17 19:24:30

标签: ubuntu selenium codeception

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

1 个答案:

答案 0 :(得分:6)

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

有无头浏览器:浏览器也没有GUI组件。 HtmlUnit与Selenium一起打包。另一个流行的浏览器是PhantomJS,其中包含名为GhostDriver的第三方Selenium绑定库。我个人避免这两个! HtmlUnit使用当前桌面浏览器都不支持的JavaScript引擎,因此测试不是很可靠。 GhostDriver有not been maintained for 2 years,因此也会产生不可靠的结果。 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。这可能会产生一些错误,您必须修复。在我的情况下,我错过了我可以使用apt-get安装的库libdbus-glib-1-2
  5. 此时,您需要在运行Selenium测试之前启动Xvfb。大多数CI服务器都有一个Xvfb插件,或者您可以从命令行执行:Xvfb :99 &。有关其他信息,请参阅docs