ruby - 当多个共享相同的名称和 ID 时,如何填写 Webrat 中的特定字段?

标签 ruby testing webrat

我刚刚开始使用 Cucumber 和 Webrat,并且正在向现有的 Rails 应用程序添加功能规范。应用程序中的一个页面上有多个表单,代表构建新 Character 对象的不同方式。这是一个简化的示例:

<form id="adopt_character_form">
    ....
    <input type="text" name="character[name]" id="character_name">
    ...
</form>

<form id="spawn_character_form">
    ....
    <input type="text" name="character[name]" id="character_name">
    ...
</form>

如您所见,页面上(至少)有两个字段具有相同的名称和 ID,尽管它们的形式不同,但我无法在 Webrat rdoc 或源代码中找到一种方法来指定一个特定的。

我知道我可以更改其中一个的名称或 ID,但我必须偏离 Rails 命名约定才能这样做,我真的不愿意这样做。我也可以将表格放在不同的页面上,但这需要对工作流程进行比我想做的更多的修改。我也可以尝试将它们合并为一个更加模块化和动态的单一形式,但是为了支持给定的测试框架而必须对 UI 进行结构更改似乎有点可疑并且可能并不总是可行的,而且我会需要 javascript。

有没有办法在 Webrat 中指定这些字段之一,或者我应该放弃并在不同的项目上尝试 Cucumber?

最佳答案

您可以使用 webrats within 方法

例如在 cucumber 步骤文件中

#my_steps
Then /^I update character name with  "([^\"]*)"$/ do |updated_character|
  within '#adopt_character_form'
     fill_in "character[name]", :with => updated_character
  end
end

希望对你有帮助

关于ruby - 当多个共享相同的名称和 ID 时,如何填写 Webrat 中的特定字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1627343/

相关文章:

ruby - 是否有更多惯用的 ruby​​ 来执行此迭代?

ruby - 从数组中删除相似的对象

Ruby Enumerable : get the first which is not nil, 但结果必须是 block 内的内容

android - 从 eclipse 到电话我得到 INSTALL_FAILED_INSUFFICIENT_STORAGE

java - 使用SpringBootTest和Autowired注解时LogCaptor捕获失败

ruby-on-rails-3 - Rails 3 集成测试 - 使用 webrat fill_in 找不到字段

asp.net - 我可以将 Webrat 用于 ASP.NET 应用程序吗?

Ruby Twitter,检索完整的推文文本

c# - 未找到 WebApi Controller 测试方法