查找 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')
在 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')