问题标签 [capybara-webkit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2742 浏览

ruby - 检查 ruby​​ 脚本挂起的原因

有时我的规范可能会挂起,我必须终止相应的 ruby​​ 进程。当我运行使用 capybara 和 webkit 驱动程序编写的集成规范时,这很常见。

是否可以检查给定的 ruby​​ 进程并查看它挂在哪里?哪个方法、操作、文件、行号等。

0 投票
0 回答
136 浏览

rspec - capybara-webkit 不再运行测试

我刚刚更新了 Capybara (0.13.0) 和 Rspec (2.12.0),现在我的 capybara-webkit 测试只工作了大约 1/5 的时间。

“不工作”是指测试的内容根本没有运行。它只是冻结在那个测试上。它似乎没有做任何事情(Ruby 进程只使用 0.1% cpu)。

此外,我的一些js: true测试似乎 100% 有效。

当我在 Firefox 中运行测试时,一切正常。

其他人有这个问题吗?关于如何调试它的任何想法?

0 投票
1 回答
841 浏览

ruby-on-rails - Rspec capybara 规范在通过“rake spec”调用时失败,但在通过“rspec spec”调用时通过

我已经尝试了这些问题的答案:1 , 2。第一个表明它可能是一个缓存问题(并建议运行rake tmp:clear)。第二个建议强制ENV['RAILS_ENV'] = 'test'进入,spec_helper.rb因为 rake 是在“开发”中运行的。我也尝试过完全删除 vcr gem,但这也没有效果。

评论提供了有关问题可能是由于环境肮脏引起的更多详细信息(因为 rake 在“开发”中开始,但 rspec 在“测试”中运行)。

有问题的规范使用 capybara 和 capybara-webkit。运行时通过,bundle exec rake spec:requests但在套件中运行时失败 via bundle exec rake。capybara 看到的 html 在这两种情况下都不同,并且在套件中运行时看不到 element #movie_imdb_id

我正在使用 gem 版本rspec (2.11.0)capybara (1.1.3)capybara-webkit (0.12.1).

Rspec 消息:

spec_helper.rb:

规范/请求/imdb_credits_spec.rb:

0 投票
1 回答
519 浏览

ajax - 在使用 Capybara 完成 AJAX 请求之前测试加载消息内容

我看到很多关于 Capybara 在测试内容之前不等待 AJAX 请求完成的问题和答案,但我需要做相反的事情:我想在 AJAX 请求完成之前测试是否存在加载消息。

在 RSpec 中使用 Capybara 完成 AJAX 请求之前,我将如何检查显示的内容?

谢谢!

0 投票
4 回答
3447 浏览

rspec - 为什么我使用 Capybara-webkit 得到空白页面,而不是使用标准(非 JS)驱动程序

在我开始尝试使用 Capybara-Webkit 与依赖于 Javascript 的界面元素进行交互之前,我的 Rspec + Capybara 集成测试运行良好。

当我尝试使用 Capybara-Webkit 时,我在save_and_open_line下面得到空白页。为什么?

/spec/features/area_spec.rb

/spec/spec_helper.rb

当我从中删除Capybara.current_driver = :webkitarea_spec.rb但将 Webkit 相关代码保留在 中spec_helper.rb)时,生成的页面save_and_open_page不为空,但在 Rspec 命令行中出现以下错误:

最初我尝试添加:js => :true到 before block ... do,但 Rspec 一直拒绝我的语法。当我添加:js => trueit ... do block要被before ... do块覆盖的第一个时,我仍然在 处得到一个空白页save_and_open_page,但是 Rspec 命令行中的错误更改为:

当我在文件Capybara.javascript_driver = :webkit中向上移动一个级别时,我得到了同样的错误。spec_helper.rbRspec.configure do

当我从before ... do块中剪切每一行并将其粘贴到it ... do block要覆盖的第一行时,我得到了同样的错误。

当我设置config.use_transactional_fixtures = true和删除所有与 Webkit 相关的代码时,规范工作,当然 for 除外page.find('#nav_reports').trigger(:mouseover),它需要一个 Javascript 驱动程序。

更新:我page.current_path.should == report_path(@report)在之前插入save_and_open_page并发现有关 Capybara-Webkit 的某些东西正在阻止我visit report_path(@report)的工作。(当我不尝试使用 Capybara-Webkit 测试依赖于 Javascript 的界面元素时,它工作正常。)错误代码是:

进一步更新:我发现当我使用 Capybara-Webkit 时,Rspec 很难找到@report对象,即使我将我的@report = Report.create(...)语句直接移动到访问之前的行report_path(@report)。完整的测试日志如下:

0 投票
1 回答
991 浏览

ruby-on-rails - Capybara-webkit 抛出找不到变量:$

我正在尝试用Capybara -webkit填充wysihmlt5文本区域(不确定是否有其他方法):

但我得到这个错误:

可能是什么问题呢?

0 投票
0 回答
1054 浏览

ruby-on-rails - 在轨道上使用 rspec-capybara 测试图像标签中图像的实际存在

在我发送的电子邮件中,我包含了一张图片,我想确保它确实加载了一张。所以,在 Mailer View Spec 的风格中,我想要一个 Capybara RSpec Matcher,它告诉我这个图像是否真的被渲染为一个图像(或者是否只有 alt 标签,因为它没有找到它)做你知道有什么选择吗?

0 投票
3 回答
2049 浏览

cucumber - 在黄瓜中使用相同的浏览器窗口

在我的功能文件中,我有这样的东西:

当黄瓜执行第二个场景时,它会重新执行后台。

我的问题是 - 是否可以告诉 Cucumber 使用与先前场景相同的浏览器会话/状态?这将帮助我的测试节省一些执行时间。

0 投票
2 回答
2348 浏览

testing - 使用 Capybara webkit 时未找到元素错误,但测试在非无头模式下运行良好

我正在尝试使用 Capybara-webkit 在无头模式下运行一个简单的谷歌搜索测试。

我已将驱动程序设置为 env.rb 文件:

特征文件有一个简单的场景大纲,用于搜索输入并验证结果是否包含预期的输出:

在步骤定义中,访问google页面并在文本框中输入输入并单击搜索按钮。

当我运行这些测试时,我得到了错误:

找不到字段“gbqfq”(Capybara::ElementNotFound)

但是,如果我将驱动程序更改为硒:

然后,测试运行并且所有步骤都通过。

在无头模式下,是否以其他方式找到元素?我的方法错了吗?我无法理解为什么在浏览器模式(打开 firefox 实例)下工作正常时,在无头模式下找不到该元素。

我是这个领域的新手,所以任何帮助都将不胜感激。先感谢您。

0 投票
2 回答
1895 浏览

ruby-on-rails - 为什么 RSpec/Capybara 不显示错误发生的位置

我正在使用 Capybara 和 webkit 进行测试,但由于某种原因,当测试失败时,它会显示错误,而不是代码中实际发生的位置。

并且在使用save_and_open_page时只会显示错误,没有关于它发生的位置的信息:

内部服务器错误

#WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20) 在 127.0.0.1:60324 的未定义方法“client_id”

我期望看到的是发生错误的行号和函数:

app/controllers/invoices_controller.rb:30:in `show'

我似乎在 Google 上找不到与此相关的任何内容。我可能使用了不正确的命名法。有人知道如何解决这个问题吗?