使用黄瓜和水豚来测试rails应用程序。假设我无法更改标记,是否可以使用capybara在充满类似td
s和select
s的页面中选择以下选项?
<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]]")
逃避也不起作用。想法?
答案 0 :(得分:18)
您可以尝试find('select', :name => 'attributes[ruby][category]')
或find_field('attributes[ruby][category]')
。
答案 1 :(得分:4)
我认为你需要引用属性值:
find("select[name='attributes[ruby][category]']")
但maro建议使用find_field是一种更清洁的方法。
答案 2 :(得分:1)
更一般地说,您可以使用XPath
find(:xpath, "//select[@name='attributes[ruby][category]'")
这种方法的优点是它可以用于任何属性。