使用 RSpec + capybara-webkit 检查 JS 框是不是存在

Posted

技术标签:

【中文标题】使用 RSpec + capybara-webkit 检查 JS 框是不是存在【英文标题】:Check if JS box exists with RSpec + capybara-webkit使用 RSpec + capybara-webkit 检查 JS 框是否存在 【发布时间】:2016-02-07 19:14:39 【问题描述】:

我正在使用 RSpec + capybara,并将 capybara-webkit 作为驱动程序。 单击按钮后,我必须检查页面中是否存在 JS 框,但没有结果。 如果我使用 selenium 作为驱动程序,测试通过,但我需要使用 capybara-webkit。

我正在使用

expect(page).to have_selector(#js_window)

我的配置是

Capybara.run_server = false
Capybara.default_selector = :css
Capybara.default_max_wait_time = 1
Capybara.javascript_driver = :webkit

RSpec.configure do |config|
 config.include Capybara::DSL
end  

【问题讨论】:

如果您添加更多有关您收到的驱动程序配置、测试和错误消息的详细信息会有所帮助 好的 - 因为你有 run_server = false,这是你试图运行的远程应用程序。您是否在 capybara-webkit 中打开了黑/白名单?如果是,您是否已将远程应用程序添加到 capybara-webkit 配置中的白名单中? github.com/thoughtbot/capybara-webkit#configuration 是的,我也尝试过config.allow_unknown_urls,但没有结果。我收到错误“预期 #has_selector("#habla_topbar_div") 返回 true,结果为 false”,但是当我使用 selenium 作为驱动程序时,它可以工作。 由于它在 selenium 中工作,这听起来像是 capybara-WebKit 的配置问题,但您还没有发布。您是否尝试将驱动程序设置为 :webkit_debug 以查看是否提供任何提示? 如果您正在使用 block_unknown_urls 并且允许页面呈现所需的所有 url(或者只是允许所有未知 url 而不是阻止它们)那么我没有想法 - 尝试设置驱动程序到 :webkit_debug 而不是 :webkit ,看看它是否提供了关于发生了什么的任何线索 【参考方案1】:

最后,这是我的 config.block_unknown_urls(我阻止了我需要的 url)和 default_max_wait_time(我将其从 1 更改为 3)的问题。 现在解决了!

【讨论】:

以上是关于使用 RSpec + capybara-webkit 检查 JS 框是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

RSpec vs Cucumber(RSpec 故事)[关闭]

SystemStackError - 堆栈级别太深;在 Rspec 测试中,使用acts_as_audited、Rspec、数据库清理器

尝试使用rspec,但是得到了一个错误,即rspec-core 2.2.1已被激活,但是我的Gemfile需要rspec-core 2.1.0

Rspec: everyday-rspec实操。第7章使用请求测试-测试API

如何使用 RSpec 测试 ActionText?

rspec 使用 draper Decorator 测试视图