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

2023-12-03

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


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

有无头浏览器:也没有 GUI 组件的浏览器。HtmlUnit与 Selenium 一起打包。另一种流行的浏览器是PhantomJS,其中有第三方 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 之类的东西,因为存储库不存在。相反,谷歌类似“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获取更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium 可以在没有 GUI 的 Ubuntu 上工作吗? 的相关文章

随机推荐

  • 如何用PHP+IIS实现URL路由?

    我编写了一个内容切换器脚本 它使用动态 URL 来传递指示要发送哪些数据的参数 例如 要查看 关于 页面 您可以键入 http www example com page about 问题是 这对用户不友好 特别是在我的情况下 用户不一定会通
  • ASP Classic 解析来自curl POST -F 的数据

    我有以下指向我的服务的 CURL 请求 curl X POST http go example com H Cache Control no cache H Content Type application x www form urlen
  • C 字符串空零?

    我有一个基本的C编程问题 情况如下 如果我正在创建一个字符数组 并且想要使用 s 转换代码将该数组视为字符串 我是否必须包含一个空零 例子 char name 6 a b c d e f printf s name 控制台输出为 abcde
  • 如何一键实现歌曲的播放、暂停、停止?

    我尝试在 android 中制作一个应用程序 仅用一个按钮即可播放 暂停和停止一首歌曲 谁能告诉我如何提出该申请 final Button bPlay Button findViewById R id bPlay MediaPlayer s
  • Couchbase 5存储桶密码设置

    我正在尝试编写一个示例来学习 couchbase 我正在尝试将它与 Spring Boot 及其 CRUD 存储库一起使用 所以我已经下载了最新的 docker 镜像 但要点是 我找不到存储桶的密码 couchbase 控制台仅允许用户创建
  • 从另一个应用程序复制 Android 数据库?

    我有同一个应用程序的两个版本 当人们从免费版本升级到付费版本时 我希望将免费数据库复制到专业数据库位置 如果数据库文件属于另一个应用程序 有没有办法可以访问它本身 该文件是否属于应用程序 或者通常可以通过文件系统访问 最后 如何在不进行硬编
  • 如何在 ffmpeg 中捕获 stdout 流然后将其通过管道传输到 v4l2loopback

    我正在尝试将 h264 流传输到 ffmpeg 然后传输到我的 v4l2loopback 设备 问题是我对Linux相当陌生 所以无法让它工作 该流可以输出到 stdout 但我不知道如何使用 ffmpeg 再次捕获它 然后再次将其传输到我
  • 在 Oracle SQL Developer 1.5 中打印 Oracle Sys_refcursor

    我正在尝试执行返回 sys refcursor 作为输出的过程 程序是PROCEDURE GET EMPLOYEEs P ID in NUMBER P OUT CURSOR OUT SYS REFCURSOR 我在 SQL Develope
  • 如何强制 ie11 请求新的图标?

    我正在开发一个网站 该网站根据登录的用户详细信息更改其图标 控制器在后端处理此请求 并为该网站发送适当的图标 到目前为止 我通过以下方式避免了大多数浏览器缓存图标 然而 该图标仍然在 ie11 中被缓存 当我在 Netbeans 上打开调试
  • 如何检查我的 python 对象是否是数字? [复制]

    这个问题在这里已经有答案了 在Java中 数字类型都是从Number派生出来的 所以我会使用 x instanceof Number python 的等价物是什么 测试你的变量是否是一个实例numbers Number gt gt gt i
  • MySQL 权重评级

    我想根据票数创建一个权重的评级 因此 1 票 5 票不可能比 4 票 4 票更好 我找到了这个数学形式 bayesian avg num votes avg rating this num votes this rating avg num
  • 在 Python 中创建条形图

    我尝试用 python 创建条形图时遇到一些问题 我的图表代码如下所示 import matplotlib matplotlib use Agg from pylab import import calendar def webshow i
  • 将二维动态数组传递给 C++ 中的函数

    我有这个二维动态数组 我想将它传递给一个函数 我该怎么做 int board board new int boardsize creates a multi dimensional dynamic array for int i 0 i l
  • 有没有办法在 Google 幻灯片中使用 Google Apps 脚本获取/添加动画到对象?

    使用 Google Apps 脚本格式化 Google 幻灯片演示文稿时 是否有任何方法可以访问和 或修改有关对象 文本框 形状 图像等 动画的数据 以便添加 删除或修改动画 目前无法使用 Google Apps 脚本获取 设置动画或过渡
  • 如何获取下个月每一天的名称?

    DateTime dt new DateTime dt DateTime Now AddMonths 1 int x DateTime DaysInMonth dt Year dt Month MessageBox Show x ToStr
  • 调用 glutWireSphere() 时 PyOpenGL 访问冲突读取

    我正在使用构建一个应用程序PyOpenGL and PyQt5 on Python3 5 2 该应用程序的目的是设置一个窗口QGLWidget类并使用绘制球体glutWireSphere功能 该代码在我的上运行良好Ubuntu Linux
  • 单个结构数据成员的奇怪指针地址

    我今天观察到一些奇怪的行为 代码如下 代码 include
  • 如何在 Protractor 测试中在 httpBackendMocks 之间切换

    我正在尝试在 Protractor 测试中模拟对 API 调用的响应 在不同的测试中 以及测试内 应用程序将使用不同的 POST 数据 POST 到 API 始终相同的 URL 并期望不同的响应 具体来说 它是一个搜索引擎 我发送不同的查询
  • 使用具有 EnableCaching = true 的 ObjectDataSource 优化分页和排序

    我正在使用使用 Linq To SQL 类备份的 ODS ObjectDataSource 来填充页面上的 Gridview 考虑到性能 我禁用了 Gridview 的 Viewstate 并在 ODS 中启用了缓存 除此之外 我还优化了
  • Selenium 可以在没有 GUI 的 Ubuntu 上工作吗?

    这个问题在这里已经有答案了 我在 Amazon AWS 和 Cloud 9 等各种云平台上使用 Codeception 默认情况下 这两个平台都没有 GUI 我的问题是 你能在这种类型的系统上运行 Selenium 吗 或者我需要以某种方式