在 Ruby 中从 Capybara 运行时,webkit_server 会定期挂起

2023-11-28

我遇到一个问题,访问 URL 时,运行无头连接到本地 Xvfb 屏幕的带有 Capybara 和 capybara-webkit 的 webkit_server 实例挂起。这似乎是在重复访问不同的 URL 并执行查找程序几分钟后发生的。 (我使用 capybara 作为 vanilla Ruby 中的屏幕抓取应用程序,而不是为了测试。)

我已经确认,当它挂起时,该站点仍然可以访问(例如,通过命令行上的curl或wget)。我还尝试将调用访问和后续查找器的 Ruby 代码包装在 Timeout 块中,以便在等待 60 秒后访问新的 URL,但在第一次发生这种情况后,任何访问()尝试都会失败。解决该问题的唯一方法是终止调用 Capybara/capybara-webkit 的 Ruby 进程和 webkit_server 进程并重新启动。

当我跟踪 webkit_server 进程时,我反复看到这样的输出:

clock_gettime(CLOCK_MONOTONIC, {5821, 680279627}) = 0
gettimeofday({1330890176, 712033}, {0, 33052112}) = 0
gettimeofday({1330890176, 712087}, {0, 140736435864256}) = 0
gettimeofday({1330890176, 712137}, {0, 33108640}) = 0
clock_gettime(CLOCK_MONOTONIC, {5821, 680486036}) = 0
clock_gettime(CLOCK_MONOTONIC, {5821, 680530091}) = 0
read(7, 0x1fac1b4, 4096)                = -1 EAGAIN (Resource temporarily unavailable)

如果我跟踪调用它的 Ruby 进程,它会挂在 read() 上:

Process 3331 attached - interrupt to quit
read(5, 
^C <unfinished ...>
Process 3331 detached

我知道 Ruby 代码挂在 Capybara Visit() 方法上。

任何有关我可以采取哪些措施来解决或纠正此问题的想法都将受到赞赏。我假设问题与某些资源 webkit_server 需要访问该 URL 有关,但我不确定下一步要尝试什么。

Thanks!


capybara-webkit 1.0 也随机挂在我的整个套件上。

仅仅添加“薄”是不够的。 但显式使用 Thin handler 是有效的。添加到 env.rb:

Capybara.server do |app, port|
  require 'rack/handler/thin'
  Rack::Handler::Thin.run(app, :Port => port)
end

注意 精简使用警告:https://github.com/thoughtbot/capybara-webkit/issues/399#issuecomment-22328028

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

在 Ruby 中从 Capybara 运行时,webkit_server 会定期挂起 的相关文章

  • Ruby on Rails:有条件地显示部分内容

    我不确定我在这里是否采用了最好的方法 但我有一个数据块 我想在搜索完成后显示它 并且之前根本不存在 首先 没有什么可显示的 其次它引用的模型为零 因此它抛出异常 我将此块放置在部分模板中 并将其添加到布局中的适当位置 有没有办法有条件地干净
  • 为什么 window.location.reload 需要包装在 function(){} 中?

    我编写了一些代码来向页面添加按钮 var myButt document createElement button myButt onclick window location reload myButt innerText Reload
  • Rails 3.2.3 命名空间控制器被同名的全局控制器覆盖

    当全局应用程序控制器首先加载时 命名空间应用程序控制器在加载该命名空间内的页面时不会加载 应用程序控制器如下所示 class ApplicationController lt ActionController Base protect fr
  • Chrome 正在吞噬我的第一个内心
    ——为什么?

    感谢 ASP NET 我开始了解摆脱 标记内的 标记的复杂性 我设置了一个我认为是不起作用的简单 DOM
  • MacOS 每秒唤醒次数错误

    构建 Rails 应用程序 ruby 2 4 0p0 Rails 5 1 4 并使用我的 Macbook Air MacOS High Sierra 10 13 2 进行本地测试 我不断遇到此问题 过去 241 秒内有 45001 次唤醒
  • Rails 4 ExecJS::Listings#index 中的程序错误

    将 JavaScript 添加到我的网络应用程序后 我现在收到以下错误 ExecJS ProgramError in Listings index stdin 16 5 error unexpected else else in Users
  • 如何设置“attr_accessible”以便不允许使用 Ruby on Rails 访问模型的任何字段?

    如果在模型文件中我只有以下代码 class Users lt ActiveRecord Base end 这意味着什么 与模型相关的所有属性是否均可访问 我如何设置 attr accessible 以便not允许访问any领域的for那个型
  • Ruby 电子表格 gem,如何居中对齐数字

    我在用着http spreadsheet rubyforge org http spreadsheet rubyforge org生成电子表格 但我遇到了一些问题 我正在打开现有工作簿并向其中添加数据 我已经设法在某种程度上使数字格式正常工
  • 避免在 Ruby 中自动从 Fixnum 转换为 Bignum

    我正在将算法从 C 移植到 Ruby 该算法有一个方法返回一个int有时会溢出 private static int NextRandom int n return 1234567890 n 12345 该算法利用溢出来避免该函数返回的值超
  • close 似乎不适用于 WebSocket

    我有这个简单的 JavaScript 代码 window ws new WebSocket ws 127 0 0 1 8000 ws onopen function ws send hello Ruby 中的服务器如下所示 require
  • ActiveRecord oracle_enhanced 适配器无法加载 ruby​​-oci8 库

    rails g scaffold失败 但 oci 脚本和 irb 数据查询有效 无法弄清楚出了什么问题 rails g scaffold table field1 integer field2 string invoke active re
  • 如何检查rails上传的文件类型?

    我如何查看即将到来的文件类型 例如 csv 或 xls 请给个代码 我得到文件是这样的 aut name uploaded io original filename File open Rails root join public uplo
  • 标记(lex?parse?)正则表达式

    使用 Ruby 我想获取一个 Regexp 对象 或表示有效正则表达式的字符串 您的选择 并将其标记化 以便我可以操作某些部分 具体来说 我想采用这样的正则表达式 字符串 regex var w parts foo bar 并创建一个替换字
  • Node.js 有水豚吗?

    有谁知道 Node js 是否有类似 capybara 的东西 怎么样Zombie http zombie labnotes org 僵尸 js 使用 Node js 进行极其快速的无头全栈测试 The Bite 如果你要编写一个速度极快的
  • 如何让 Sinatra 通过 HTTPS/SSL 工作?

    正如标题所示 谷歌没有提供任何与此相关的有用信息 如何为 Sinatra 应用程序设置和配置 HTTPS SSL 如何创建 HTTPS 路由 我以前从未在我的应用程序中使用过 HTTPS 也没有调整 Rack 其他内容的经验 所以我很欣赏详
  • Rails:渲染不起作用,仍然出现“模板丢失”

    我目前正在学习 Rails 指南 我完成了这些步骤 但仍然遇到错误 我的 Ruby 版本是ruby 2 1 1p76Rails 版本是4 0 4 按照指南的指示 我创建了一个Article Controller class Articles
  • 无需别名的 Ruby YAML 编写

    我正在从 ruby 将数据写入 yaml 文件 并且经常在该文件上添加别名 像 id001 somekey somevalue id001 就我而言 我使用 yaml 文件来aid可读性并将名称添加到文件中的值 因为现有数据只是 没有键的分
  • 使用 YAML.load 解析 json 安全吗?

    我使用的是红宝石2 1 0 我有一个 json 文件 例如 测试 json item apple 1 banana 2 使用 YAML load 加载此文件是否安全 YAML load File read test json 我正在尝试加载
  • 从类内部调用属性访问器方法[重复]

    这个问题在这里已经有答案了 我正在尝试调用我的类属性编写器之一 但由于某种原因它永远不会被调用 下面是一些代码 可以使这一点更清楚 class Test attr reader test def test val puts Called t
  • Ruby 可选参数和多个参数

    我试图将方法的第一个参数设置为可选 后跟任意数量的参数 例如 def dothis value 0 args 我遇到的问题是 这似乎实际上不可能 当我打电话时dothis hey how are you good 我希望它将值设置为默认值

随机推荐

  • 如何签署 JWT 以从 Azure Active Directory 交换访问令牌?

    我正在用nodejs编码 我指的是这个文档 https learn microsoft com en us azure active directory develop v1 oauth2 client creds grant flow s
  • Xcode 中的优化级别

    我用谷歌搜索了这个问题以澄清一些基本概念 但没有找到合适的答案 在 Swift 编译器和 Apple LLVM Objective C 的 Xcode 构建设置中 有多少个优化级别可用于代码生成 Swift 提供了四种不同的优化级别 Ono
  • 以编程方式构建项目

    我需要以编程方式为我正在动态创建的 csproj 构建一个项目 在搜索 Google 时 我发现了 MS 为 MSBuild 引擎提供的类和 API 有了这些信息 我创建了一个执行 msbuild exe 的进程 然后读取输出 但现在我想使
  • Android UnknownHostException Facebook SDK

    情况是这样的 我的应用程序运行良好 并且能够与 URL 建立连接 但在让应用程序运行几个小时后 Facebook 请求突然给了我以下错误 09 26 10 01 25 175 W System err 252 java net Unknow
  • 如何避免不相关的可为空警告(无需显式抑制)

    有没有办法让分析器理解变量Bar对于以下情况有值吗 nullable enable class Foo bool GenerateArray gt Bar HasValue int Bar get set void FooBar var d
  • 强参数和json输入rails 4

    我正在尝试通过 JSON 字符串保存数据 其中嵌套了关联属性 我不想使用 attr accessible 我几乎掌握了强参数的逻辑 但仍然遇到使它们工作的问题 我正在获取 JSON 字符串并使用它来保存数据 data request bod
  • Python Outlook:读取附加邮箱的收件箱

    我正在使用 Outlook 2010 并且有我的主邮箱 电子邮件受保护 我还在我的个人资料中添加了另一个邮箱 mb data proc 两者都显示为 Outlook 中的顶级文件夹 email protected Inbox Sent It
  • EXISTS 子查询中什么更容易阅读? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 It s a questi
  • 角度材质数据表加载缓慢

    我的角度材料应用程序遇到了一些麻烦 我正在使用带有分页器的数据表 数据不必排序 加载数据时 我显示了一个垫子旋转器 div div
  • Mac OS 10.7 (Lion) 上类似 Valgrind 的工具

    我需要一个工具来帮助我以类似于 valgrind 的方式查找 C 程序中的内存泄漏 它应该弄清楚程序何时覆盖不应该覆盖的内存 例如 通过错误计算数组索引 我了解到有泄漏实用程序以及图形仪器应用程序 不过我认为它只能找到用 new 或 mal
  • 如何检出 git stash 中未跟踪的文件?

    假设我使用以下之一隐藏了一些更改 git stash u git stash include untracked 我可以通过以下方式从存储中检出单个文件 git checkout stash 0 filename 如果 git 知道 文件名
  • 在文件上打开资源管理器

    在Python中 如何跳转到Windows资源管理器中的文件 我找到了跳转到文件夹的解决方案 import subprocess subprocess Popen explorer C path of folder 但我没有文件的解决方案
  • 将现有 Docker 镜像部署到 Heroku

    我无法将现有的 docker 镜像部署到 Heroku Image docker run it name xp home enonic xp home docker run d p 8080 8080 volumes from xp hom
  • 如何传播 WPF 数据绑定期间发生的错误和异常?

    我经常发现我不小心破坏了应用程序中的数据绑定 通过重命名属性而不是在 XAML 中重命名它 或者通过属性因某种原因引发异常 默认情况下 数据绑定错误会被记录以调试输出 并且捕获和抑制引发的异常 有没有一种简单的方法可以在记录调试输出后引发异
  • 将 NA 替换为 r 中每个组同一列的另一行中的值

    我需要将每组的给定列的每行的 NA 替换为不同行的非 NA 值 假设样本数据如下 id name 1 a 1 NA 2 b 3 NA 3 c 3 NA 期望的输出 id name 1 a 1 a 2 b 3 c 3 c 3 c 有没有办法在
  • SignalR、有限的唯一连接(打开的选项卡)IIS 8、Windows 8

    当打开多个选项卡并为每个选项卡分配唯一的 id 时 不可能使用 SignalR 请参阅 当 SignalR 一次建立 8 10 个连接时 实时聊天不起作用 但 我在此 stackoverflow 问题中描述了一种解决方法 这个想法是按顺序覆
  • TFS 2010 中的禁止模式签入策略

    我一直在尝试使用 TFS 2010 Power Tools 的禁止模式部分 但我只是不明白某些东西 当我尝试使用它时 我根本无法进行任何更改 我使用的是最近发布的版本 我相信是2010年4月23日 所以它不是旧版本 首先 是的 我知道它是基
  • 如何从 optarg 获取值

    您好 我正在编写一个简单的客户端 服务器程序 在这个程序中我必须使用getopt 获取端口号和 IP 地址 如下所示 服务器 i 127 0 0 1 p 10001 我不知道如何从 optarg 获取值 以便稍后在程序中使用 您使用 whi
  • 读取对象属性时忽略 NullReferenceException

    有没有办法让C 忽略NullReferenceException 或与此相关的任何特定例外 一组语句 当尝试从可能包含许多空对象的反序列化对象中读取属性时 这非常有用 使用辅助方法来检查 null 可能是一种方法 但我正在语句块级别寻找类似
  • 在 Ruby 中从 Capybara 运行时,webkit_server 会定期挂起

    我遇到一个问题 访问 URL 时 运行无头连接到本地 Xvfb 屏幕的带有 Capybara 和 capybara webkit 的 webkit server 实例挂起 这似乎是在重复访问不同的 URL 并执行查找程序几分钟后发生的 我使