为什么jquery代码在水豚测试中不起作用

问题描述 投票:0回答:1

我有一个选择框选择孩子的数量,当我选择选项时,其他选择框必须出现以选择年龄。

我使用此代码选择元素

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-Prism gem

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.search_room1_child_ages.click

 NoMethodError:
   undefined method `click' for []:Capybara::Result
jquery rspec capybara ruby-on-rails-6
1个回答
0
投票

您显示的特定错误是因为您试图根据site_prisms click定义的内容调用elementselements定义了一个返回多个元素的方法,因此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有什么关系

© www.soinside.com 2019 - 2024. All rights reserved.