我无法使用capybara从html元素中选择一个选项。
<select multiple="multiple" name="profile_invitation[permissions][]" id="profile_invitation_permissions">
<option value="manage_permissions">Manage Permissions</option>
</select>
我试过了
#within 'select#profile_invitation_permissions' do
#find("option[@value='manage_permissions']").click
#end
回传
Unable to find css "option[@value='manage_permissions']" within #<Capybara::Node::Element tag="select" path="/html/body/div/div/main/div/div[2]/div[3]/div/div[2]/form/select"> (Capybara::ElementNotFound)
我试过了
select "Manage Permissions", :from => "select#profile_invitation_permissions"
回传
Unable to find select box "select#profile_invitation_permissions" that is not disabled and Unable to find input box with datalist completion "select#profile_invitation_permissions" that is not disabled (Capybara::ElementNotFound)
发布于 2022-07-22 07:36:12
您有两个"Manage Permissions"
/value='manage_permissions'
选项标记,为什么属性选择器中有@value=
而不是value=
?
发布于 2022-07-23 01:33:29
你让事情变得更复杂了。从docs - https://rubydoc.info/github/teamcapybara/capybara/Capybara/Node/Actions#select-instance_method -我们可以看到,select
接受要选择的选项的文本,并且可以选择一个from
设置来指定选择框的id、名称或标签。因此,如果页面上只有一个“管理权限”选项,则只需执行即可。
select 'Manage Permissions'
如果页面上有多个匹配选项,则可以使用from
选项缩小其范围。
select 'Manage Permissions', from: 'profile_invitation_permissions'
https://stackoverflow.com/questions/73076490
复制相似问题