capybara:使用选择器查找(元素)来定位复杂的属性名称
使用黄瓜和水豚测试 Rails 应用程序。假设我无法更改标记,我可以使用水豚在充满类似 td
和 select
的页面中选择以下 select 吗?
<td>
<select name="attributes[ruby][category]">
<option value="2" selected="selected">Languages</option>
<option value="3">Communication</option>
</select>
</td>
这似乎失败了(我认为是因为嵌套的“[”和“]”)。
find("select[name=attributes[ruby][category]]")
逃避也是不行的。想法?
Using cucumber and capybara to test a rails app. Assuming I cannot change the markup, can I use capybara to select the following select in a page full of similar td
s and select
s?
<td>
<select name="attributes[ruby][category]">
<option value="2" selected="selected">Languages</option>
<option value="3">Communication</option>
</select>
</td>
This seems to fail (I assume because of the nested "[" and "]").
find("select[name=attributes[ruby][category]]")
Escaping doesn't work either. Thoughts?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以尝试
find('select', :name => 'attributes[ruby][category]')
或find_field('attributes[ruby][category]')
。You can try
find('select', :name => 'attributes[ruby][category]')
orfind_field('attributes[ruby][category]')
.我认为您需要引用属性值:
但 maro 建议使用 find_field 是一种更简洁的方法。
I think you need to quote the attribute value:
but maro's suggestion of using find_field is a cleaner approach.
更一般地,您可以使用 XPath。
这种方法的优点是它可以用于任何属性。
More generally you can use XPath
This approach has the advantage that it can be used for any attribute.