我有一个选择框来选择孩子的数量,当我选择选项时,必须出现其他选择框才能选择年龄。
我使用此代码来选择元素
search_page.search_room1_child.click
search_page.search_room1_child_options[1].click
search_page.search_room1_child_ages.click
search_page.search_room1_child_ages_options[8].click
我使用场地棱镜宝石
element :search_room1_child, 'select[name="filter[rooms][room1][child]"]'
elements :search_room1_child_options, 'select[name="filter[rooms][room1][child]"] option'
elements :search_room1_child_ages, 'select[name="filter[rooms][room1][child_ages][]"]'
elements :search_room1_child_ages_options, 'select[name="filter[rooms][room1][child_ages][]"] option'
我收到此错误
失败/错误:search_page.搜索_房间1_儿童_年龄。单击
NoMethodError:
undefined method `click' for []:Capybara::Result
您显示的特定错误是因为您尝试根据调用由 site_prismselements
定义的内容的结果调用click
。elements
定义了一个返回多个元素的方法,因此没有定义click
因为它click
只对单个element
有意义。你可能想拥有
element :search_room1_child_ages, 'select[name="filter[rooms][room1][child_ages][]"]'
在站点棱镜部分定义中。虽然如果你要使用很多名字这样的元素,你真的应该使用内置的Capybara选择器类型
element :search_room1_child_ages, :select, name: "filter[rooms][room1][child_ages][]"
或者,更好的是,考虑注册 Capybara 自定义选择器以真正清理您的代码。
注意:我真的不确定你的问题与jQuery有什么关系,如其标题中所述
我通过在测试环境中预编译资产来解决问题
RAILS_ENV=test rake assets:precompile