查找仅知道其名称一部分的选择

时间:2019-12-03 05:55:19

标签: capybara

在Capybara中,我怎么能指代只知道其名称一部分的选择?

我有以下HTML

<select name="user[work_hours][HASH][end_hour]">
 ...
</select>

其中HASH是未知值,我需要找到选择项。 我可以使用正则表达式吗?

1 个答案:

答案 0 :(得分:1)

有很多方法可以做您想要的。根据周围的HTML,您可以将查找范围限定到页面的仅包含一个选择的部分,因此您无需指定任何内容即可完全匹配该选择

find('css to locate wrapping/scoping element').find(:select)

如果这不可能,则可以使用CSS属性的开头和结尾选择器,如

find('select[name^="user[work_hours]["][name$="][end_hour]"]')

如果这看起来太复杂,则可以使用:element选择器类型,该类型将允许您在任何具有字符串或正则表达式的属性上进行匹配。在具有许多选择元素的大页面上,这可能效率不高。

find(:element, :select, name: /user\[work_hours\]\[.*\]\[end_hour\]/

如果select中的选项在页面上是唯一的,另一种解决方案就是选择该选项,而不用担心找到实际的select元素

select('text of option')