当前位置: 首页 > 知识库问答 >
问题:

Rails Cucumber使用Capybara测试AJAX

丁宏浚
2023-03-14
# first create the items for the test db:
Given /^there are four total items and three unique item names$/ do
  create(:product, size: 'M', color: 'Black')
  create(:product, size: 'M', color: 'Black')
  create(:product, size: 'S', color: 'Black')
  create(:product, size: 'S', color: 'White')
  create(:product, size: 'S', color: 'White', available: false)
  create(:product, name: 'Alicia Dress', size: 'L', color: 'black', order: 3)
  create(:product, name: 'Cleopatra Dress', size: 'L', color: 'blue', order: 2)
end
Scenario: If a shopper selects a different size or color
  Given the shopper is on the "shop" page
  When the shopper clicks on "Master Coat"
  And the shopper selects a size "M"
  Then the total quantity should change to "2"
When /^the shopper selects a size "(.+)"$/ do |size|
  find('.select-size').find(:option, size).click
end

Then /^the total quantity should change to "(.+)"$/ do |quantity|
  expect(page).to have_css('option', :text => quantity)
end

共有1个答案

庄文栋
2023-03-14

我通常使用带有@javascript标记的selenium驱动程序来测试Ajax调用。

在features/support/capybara.rb中

Capybara.default_driver = :selenium

或者尝试场景上方的@javascript标记

@javascript
Scenario: If a shopper selects a different size or color
Given the shopper is on the "shop" page
  When the shopper clicks on "Master Coat"
  And the shopper selects a size "M"
  Then the total quantity should change to "2"
 类似资料:
  • 问题内容: 关于如何使用Capybara / Selenium / Rspec 执行javascript测试的例子很多,您可以在其中编写如下测试: 但是,使用 minitest时, 您无法传递第二个参数来指示selenium执行测试。 有没有人对如何做到这一点有任何想法? 问题答案: 嗯,我注意到文档中有几行似乎说以上内容只能在Rspec中完成 但是,如果您使用的是 RSpec或Cucumber

  • 我已经在我的Rails4应用程序中实现了JQuery文件上传。当我从浏览器手动测试文件上传时,文件上传工作正常,但测试失败。 下面是我上传JQuery文件的规范:需要'spec\u helper' 我使用rspec2、水豚2和恶灵来实现这个特性规范。

  • 问题内容: 我正在尝试在dockerizedselenium独立firefox浏览器上运行Ruby on Rails功能测试。似乎我在联网方面遇到问题,因为selenium实例无法连接到Capybara启动的URL。 这是我的示例文件: 我在启用网络的情况下开始docker-compose: 测试脚本像这样运行一个rspec命令 对于docker测试,我为Capybara启用了远程驱动程序: 最后

  • 问题内容: 我正在使用jQuery Selectable管理日历。该功能很好用,仅仅是测试自动化的问题。 我需要从日历网格中选择多个非连续日期。 我尝试了几件事,并不是真的期望它们能工作 我为一系列日期执行此操作,但似乎并未考虑ctrl键,因为实际上仅选择了最后选择的日期。 问题答案: 您可以使用selenium- webdriver的动作构建器。但是,firefoxdriver中似乎存在一个错误

  • 问题内容: 我有一个设计为在禁用JavaScript时仍能正常运行的应用程序,因此我想编写一些涵盖这些情况的规范。 我将Selenium(Firefox)与Capybara一起使用,并且正在注册一个禁用JavaScript的新驱动程序(通过Selenium的属性) 功能规格实际上无法禁用JavaScript。在测试过程中弹出浏览器窗口并用暂停时,我可以肯定地单击我知道需要JavaScript的项目

  • Capybara 通过模拟真实用户交互的方式来测试你的 web 应用。它内置 Rack::Test 和 Selenium 支持,也支持其他驱动。WebKit 通过外部 gem 的形式支持。 特性 无需配置 —— 对于 Rails 和 Rack 应用而言,开箱即用。 符合直觉的 API  —— 模拟真实用户行为。 可替换后端  —— 可以替换测试后端,例如从快速的 headless 模式切换到实际的