无法远程运行针对 Safari 11 的测试(ssh、CI)

2023-11-29

当我尝试通过 ssh 手动或通过 Jenkins(其中 Safari 所在的机器是远程从机)运行测试时,我在针对 Safari 11 运行 Ruby/RSpec 测试时遇到问题。

执行测试时,我收到以下错误:

Selenium::WebDriver::Error::WebDriverError:
   unable to connect to safaridriver 127.0.0.1:7050

奇怪的是,当我直接登录到 Mac 机器时,我能够运行测试。这使我得出的结论是,默认情况下可能有一些权限禁用 ssh 会话的执行,但不确定为什么?

另外,据我所知,Safari 驱动程序是 Safari 10+ 的一部分,因此不再作为扩展安装

更新:我发现当我通过 ssh 登录时,由于某种原因无法生成应由测试生成的 safaridriver 可执行文件。 例子:

/usr/bin/safaridriver -p 7050

它只会以非零退出代码终止,而直接在机器上运行相同的命令将在前台运行 safaridriver。由于我希望 Jenkins 在这台机器上运行测试作业,因此我解决这个问题的想法是在这台机器上启动 safaridriver(通过 cron 或 launchctl),然后使用此实例通过我的测试连接到它。然而,到目前为止,我无法让我的测试(Selenium/Capybara)重新使用现有的 safaridriver,而不是总是尝试在不同的端口上生成新的 safaridriver。对此的任何想法也将不胜感激。

这是我的环境: 操作系统:MacOS Sierra 10.12.6 浏览器:Safari 11.0.2

提前致谢


有一个可能的解决方法可以做到这一点。首先,您需要创建启动 SafariDriver 的 Automator 工作流程或 Apple 脚本

Safari App

然后将其另存为应用程序。假设我们命名它SafariDriver7050.

然后从 SSH 会话中您需要执行

open /Applications/SafariDriver7050.app

这实际上会在登录会话中启动 SafariDriver,它应该适合您。

需要注意的是,关闭它时,您需要先杀死SafariDriver7050应用程序,然后你需要杀死safaridriver过程。顺序很重要,否则会在 UI 上创建错误对话框

Edit-1:

正如您所建议的,当您将测试包装为应用程序时,这样做会更容易,然后它将自动能够启动 SafariDriver 而不会出现任何问题。问题的关键是使用openSSH 会话中的命令

Edit-2

为什么 SafariDriver 无法在 SSH 中工作?好吧,如果你看看 linux 的对应版本

对于 Linux,我们可以使用 DISPLAY 环境变量在现有显示器中启动应用程序,或者我们可以使用 XVFB 之类的东西在虚拟显示器中启动浏览器。这是大多数框架在 Linux 机器上使用的概念。

但 Mac 没有这样的功能,这就是为什么需要这种解决方法。现在为什么没有这个,我不确定。可能还有一些我可能不知道的其他解决方法,因此任何拥有有价值信息的人都可以帮助改进这部分答案

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法远程运行针对 Safari 11 的测试(ssh、CI) 的相关文章

  • 尝试 SSH 时设备的 ioctl 不合适

    我正在尝试通过 SSH 连接几台服务器并尝试获取sudo l每个服务器的输出 下面是我正在执行的脚本 bin bash serverlist tmp servers while IFS read r server netgroup user
  • 通过浏览器的“BACK”功能加载页面时触发 onload 脚本(js 或 jQuery)

    当通过浏览器的 后退 按钮或键盘命令到达页面时 我找不到执行脚本的方法 背景 我需要知道是否使用浏览器的 后退 按钮或键盘命令打开页面 然后我可以检查存储的 sessionStorage 变量并触发一些适当的内容 例如 如果我将其放入我的页
  • gitlab runner ssh私钥644文件权限错误

    运行 gitlab ci cd 管道时 ssh 给出 0644 badpermission 错误 变量作为文件类型存储在 gitlab 的 settings gt variable 部分中 gitlab ci yml 文件如下所示 stag
  • 通过 SFTP 克隆 Git 存储库

    每次我尝试克隆 Git 存储库时都会遇到致命错误 我运行这个 git clone sftp email protected cdn cgi l email protection git foobar git 我得到这个 fatal Unab
  • 当输入集中在移动 Safari 上时,页面底部出现不需要的填充

    我正在移动 safari 上使用文本区域 当文本区域聚焦时 视口似乎会在文档下方添加填充 当检查和选择区域时 它不会解析为元素 甚至不会解析为 html 节点 文本区域在屏幕上的位置或是否绝对位置似乎并不重要 当其聚焦时 填充始终存在 有时
  • 使用 shoulda 重构 Rails 模型上的 rspec 测试

    了解后应该匹配器 https github com thoughtbot shoulda matchers通过回答关于属性可访问性测试的另一个 StackOverflow 问题 https stackoverflow com a 11849
  • 为什么 SSH 远程命令获得的环境变量比手动运行时少? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如果我 ssh 到计算机并运行它 我有一个命令可以正常运行 但当我尝试使用远程 ssh 命令运行它时会失败 例如 ssh user IP
  • 通过 SSH 将变量传递给远程脚本

    我正在通过 SSH 从本地服务器在远程服务器上运行脚本 首先使用 SCP 复制该脚本 然后在传递一些参数时调用该脚本 如下所示 scp path to script server example org another path ssh s
  • 不可靠/不稳定的 Capybara/AngularJS 集成测试与计时问题

    如何使这些测试可靠地通过 目前这些测试很不稳定 有时他们会过去 有时他们会失败 下面是演示此问题的设置 代码和输出 克服这个问题的建议将不胜感激 我相信也会帮助许多其他人 所以请发表评论 测试代码环境 轨道3 2 RSpec 2 x 水豚
  • Paramiko ValueError“p 的长度必须恰好为 1024、2048 或 3072 位”

    我正在尝试使用 Python 脚本连接 SFTP 由于 p 错误 我无法连接 import paramiko client paramiko SSHClient client load system host keys client con
  • 通过 SSH 的 Pygame 不注册击键(Raspberry Pi 3)

    所以我得到了 raspi 3 和简单的 8x8 LED 矩阵 在玩了一些之后 我决定用 pygame 的事件制作一个简单的蛇游戏 显示在该矩阵上 我之前没有 pygame 的经验 除了 LED 矩阵之外 没有连接任何屏幕 显示器 所以最初的
  • 如何阻止与 RSpec 和 Capybara 的外部连接?

    在我的 Rails 项目中 我想编写非理想条件的测试 例如缺乏互联网连接或超时 例如 我正在使用 gem 来联系 API 并且希望确保在我的应用程序和外部 API 之间存在连接问题时能够正确处理错误 我已经可以通过用录像机制作固定装置并从
  • 如何在 Safari 上打开本地 html 文件?

    我想打开本地 html 文件Safari集成到我的Swift 3应用 我知道如何使用网址来做到这一点 这是我用来执行此操作的代码 let encodedString url addingPercentEncoding withAllowed
  • ASP.NET - Google Chrome 缓存 DropDownList 选择

    我的购物车页面上的 Google Chrome 和 Safari 似乎遇到了缓存问题 购物车中有 2 个下拉列表 当您在更改下拉列表中的值后点击结帐按钮时 它会将列表中选择的内容提交到数据库 解释意外的行为有点困难 所以我会尝试一步一步地写
  • 横向旋转到纵向时的字体大小怪异 - CSS 媒体查询 - iPhone5 Safari

    我已经用谷歌搜索了这个 但无法弄清楚 谢谢你的帮助 Studiolynch com 响应式和流体布局 在 iphone 5 Safari 中完美运行 除了从横向模式旋转到纵向模式会使字体大小小于应有的大小 但是 如果您最初以纵向模式加载页面
  • 使用 VCR 过滤敏感数据

    我正在使用 VCR gem 记录 http 交互并在将来重播它们 我想过滤掉 uri 请求中的实际密码值 以下是 uri 的示例 http services somesite com Services asmx Cabins Usernam
  • 使用rSpec 测试delayed_job 链的最佳方法是什么?

    目前 当我的代码中有一个延迟方法时 如下所示 CommentMailer delay deliver comments comment true 我在规范中写了这样的内容 dj mock DelayProxy CommentMailer s
  • Safari 的“阅读器模式” - 开源解决方案? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Safari 有一个 阅读器模式 可以删除网站上除文本之外的所有内容 有谁知道提供相同功能的开源库 或
  • Shoulda/RSpec 匹配器 - 条件验证

    在我的代码中 我使用 Shoulda 匹配器进行了以下验证 效果很好 it should validate presence of name 在我的模型中 我已将条件添加到验证中 validates presence of name if
  • ssh远程变量赋值?

    以下内容对我不起作用 ssh email protected cdn cgi l email protection k 5 echo k 它只是返回一个空行 如何在远程会话 ssh 上分配变量 Note 我的问题是not关于如何将本地变量传

随机推荐