ubuntu - Selenium 可以在没有 GUI 的 Ubuntu 上运行吗

标签 ubuntu selenium codeception

<分区>

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

最佳答案

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

有 headless 浏览器:也没有 GUI 组件的浏览器。 HtmlUnit与 Selenium 包装在一起。另一个流行的浏览器是 PhantomJS ,它有一个名为 GhostDriver 的第三方 Selenium 绑定(bind)库.就我个人而言,我会避免这两种情况! HtmlUnit 使用当前桌面浏览器都不支持的 JavaScript 引擎,因此测试不是很可靠。 GhostDriver 有 not been maintained for 2 years ,因此也会导致不可靠的结果。 PahntomJS 绝对是一个选项,因为它使用 WebKit——Safari 和 Chrome 浏览器中的引擎,但你必须自己编写 API .

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

  1. 安装 Xvfb:apt-get install xvfb
  2. 安装浏览器。假设您使用的是 Debian 服务器,您将无法使用 apt-get 安装类似 Firefox 的东西,因为存储库不存在。取而代之的是 Google 类似“Firefox 离线安装”或任何您想使用的浏览器,然后在您的服务器上使用 wget 来获取包。
  3. 将包解压到某个地方,例如 /usr/local/lib,然后创建一个从 /usr/local/bin 到启动浏览器的二进制文件的软链接(soft link)。
  4. 现在尝试 headless 启动浏览器。例如,对于 Firefox,您可以尝试:xvfb-run firefox。这可能会产生一些错误,您必须修复这些错误。就我而言,我缺少库 libdbus-glib-1-2,我可以使用 apt-get 安装它。
  5. 此时您需要在运行 Selenium 测试之前启动 Xvfb。大多数 CI 服务器都有 Xvfb 的插件,或者您可以从命令行执行此操作:Xvfb :99 &。查看docs了解更多信息。

关于ubuntu - Selenium 可以在没有 GUI 的 Ubuntu 上运行吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34342632/

上一篇:Ubuntu : How Uninstall PowerBroker Identity Services

下一篇:ubuntu - 如何在 Ubuntu 14.04 x64 上安装 Theano,并配置它以使用 GPU?

相关文章:

php - 使用 PhpBrowser 的 Codeception 似乎不遵循重定向

python-2.7 - import numpy : lapack_lite. 出错所以:undefined symbol

ubuntu - curl:(18)传输关闭,剩余 2 个字节要读取

python - 在 chromedriver 中禁用 PDF 查看器插件

java - 如何使用 Selenium 单击 Compose 部分中的更多选项?

docker - 如何进行代码接收和Gitlab CI(持续集成)

ubuntu - OpenKm 6.3.0 未在 Ubuntu 服务器中启动

java - 如何运行包含 .jar 文件的 java 程序

java - 有没有办法在 Selenium 运行时动态获取元素的 xpath

codeception - 如何在 Codeception 中运行单个测试?