【问题标题】:Will Selenium work on Ubuntu with no GUI [duplicate]Selenium 可以在没有 GUI 的 Ubuntu 上工作吗?
【发布时间】:2016-03-24 09:30:31
【问题描述】:

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

【问题讨论】:

标签: ubuntu selenium codeception


【解决方案1】:

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 之类的东西,因为存储库不存在。取而代之的是 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 &。有关更多信息,请参阅docs。

【讨论】:

  • 这个答案越来越受欢迎,所以我想我应该补充一下:Chrome 和 Firefox 现在支持开箱即用的无头模式,无需 Xvfb。从 Selenium 3.6.0 开始,Selenium 支持此功能,没有任何特别之处。
  • 一个问题:如果我们使用的是 PhantomJS、GhostDriver、HTMLUnit 等无头浏览器。我们还需要 Xvfb 吗?
  • @Darshan 当然:不。
猜你喜欢
  • 2016-07-20
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-12
  • 2019-04-08
  • 2019-01-14
  • 2014-08-22
相关资源
最近更新 更多