查找 select 只知道其名称的一部分

Find select knowing just part of its name

在 Capybara 中,如何引用只知道其部分名称的 select?

我有下面这一段HTML

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

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

有很多方法可以做你想做的事。根据周围的 HTML,您可以将查找范围限定为仅包含 select 的页面部分,因此您无需指定任何内容来匹配 select全部

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

如果这不可能,您可以使用 CSS 属性以 select 开始和结束,或者像

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

如果这看起来太复杂,您可以使用 :element selector 类型,它允许您使用字符串或正则表达式匹配任何属性。这在包含许多 select 元素的大页面上可能效率低下。

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

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

select('text of option')