一尘不染

Selenium是否可以在没有GUI的Ubuntu上工作?

selenium

我在诸如Amazon AWS和Cloud9等各种云平台上使用Codeception。默认情况下,这两个都没有GUI。我的问题是,您可以在这种类型的系统上运行Selenium吗?还是我需要以某种方式获取GUI?


阅读 252

收藏
2020-06-26

共1个答案

一尘不染

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

有无头浏览器:也没有GUI组件的浏览器。HtmlUnit与Selenium打包在一起。另一个流行的浏览器是PhantomJS,它具有名为GhostDriver的第三方Selenium绑定库。我个人会
避免这两种情况
!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之类的程序,因为不存在存储库。取而代之的是Google之类的“ 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 &。有关其他信息,请参阅文档
2020-06-26