为什么 jquery 代码在水豚测试中不起作用
Why jquery code don't work in capybara tests
我有一个 select 框来选择 child 的数量,当我选择选项时,其他 select 框必须出现才能选择年龄。
我用这段代码来选择元素
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
我用site-prismgem
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'
我收到这个错误
Failure/Error: search_page.search_room1_child_ages.click
NoMethodError:
undefined method `click' for []:Capybara::Result
您显示的特定错误是因为您试图根据调用 site_prisms elements
定义的内容的结果调用 click
。 elements
定义了一个 returns 多个元素的方法,因此 click
没有定义,因为 click
只对单个 element
有意义。你可能想要
element :search_room1_child_ages, 'select[name="filter[rooms][room1][child_ages][]"]'
在您的站点棱镜部分定义中。虽然如果你要使用很多具有这样名称的元素,你真的应该使用 built-in Capybara 选择器类型
element :search_room1_child_ages, :select, name: "filter[rooms][room1][child_ages][]"
或者,更好的是,考虑注册 Capybara 自定义选择器以真正清理您的代码。
注意:我真的不确定您的问题与标题中所述的 jQuery 有什么关系
我通过在测试环境中预编译资产解决了这个问题
RAILS_ENV=test rake assets:precompile
我有一个 select 框来选择 child 的数量,当我选择选项时,其他 select 框必须出现才能选择年龄。
我用这段代码来选择元素
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
我用site-prismgem
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'
我收到这个错误
Failure/Error: search_page.search_room1_child_ages.click
NoMethodError:
undefined method `click' for []:Capybara::Result
您显示的特定错误是因为您试图根据调用 site_prisms elements
定义的内容的结果调用 click
。 elements
定义了一个 returns 多个元素的方法,因此 click
没有定义,因为 click
只对单个 element
有意义。你可能想要
element :search_room1_child_ages, 'select[name="filter[rooms][room1][child_ages][]"]'
在您的站点棱镜部分定义中。虽然如果你要使用很多具有这样名称的元素,你真的应该使用 built-in Capybara 选择器类型
element :search_room1_child_ages, :select, name: "filter[rooms][room1][child_ages][]"
或者,更好的是,考虑注册 Capybara 自定义选择器以真正清理您的代码。
注意:我真的不确定您的问题与标题中所述的 jQuery 有什么关系
我通过在测试环境中预编译资产解决了这个问题
RAILS_ENV=test rake assets:precompile