如何在 rails 中使用 assert_selector 获取占位符值
How to get placeholder value using assert_selector in rails
如何使用 rails 中的 assert_selector
从输入栏中获取占位符值?
<input placeholder="hello world" value="<%= params[:query] %>" required>
我想检查占位符中是否有 hello
您可以使用 xpath
并验证是否有一个 input
元素的占位符 contains
'hello'
assert_selector(:xpath, './/input[contains(@placeholder,"hello")]')
如果你想准确地检查带有 id
的输入
assert_selector(:xpath, './/input[@id="input_id"][contains(@placeholder,"hello")]')
我不确定是否有检查正则表达式的辅助方法,例如 ~= /.*hello.*/
,如果你想这样做,你还有另一个选择
placeholder = find('#input_id')['placeholder'] # or use :xpath
assert_match /.*hello.*/, placeholder
虽然 Lam Phan 的回答确实回答了这个问题,但从 readability/understandability 的角度来看,当 CSS 有您需要的东西时诉诸于编写 XPath 查询通常不是最好的主意。
CSS 有许多属性选择器,通常对测试最有用的是
- =匹配
- *=包含
- ^= 以
开头
- ~=空格分隔匹配
你可以在https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors
看到完整的集合
在这种情况下,这意味着您可以执行以下任一操作
assert_selector('input[placeholder*="hello"]') # contains 'hello'
assert_selector('input[placeholder~="hello"]') # contains the word 'hello'
assert_selector('input[placeholder^="hello"]') # starts with 'hello'
另一种选择是利用 Capybara :field 选择器有一个 placeholder
过滤器 - https://github.com/teamcapybara/capybara/blob/master/lib/capybara/selector.rb#L34 - 它采用正则表达式 - 所以你可以做
assert_field(placeholder: /hello/)
与
相同
assert_selector(:field, placeholder: /hello/)
如何使用 rails 中的 assert_selector
从输入栏中获取占位符值?
<input placeholder="hello world" value="<%= params[:query] %>" required>
我想检查占位符中是否有 hello
您可以使用 xpath
并验证是否有一个 input
元素的占位符 contains
'hello'
assert_selector(:xpath, './/input[contains(@placeholder,"hello")]')
如果你想准确地检查带有 id
的输入assert_selector(:xpath, './/input[@id="input_id"][contains(@placeholder,"hello")]')
我不确定是否有检查正则表达式的辅助方法,例如 ~= /.*hello.*/
,如果你想这样做,你还有另一个选择
placeholder = find('#input_id')['placeholder'] # or use :xpath
assert_match /.*hello.*/, placeholder
虽然 Lam Phan 的回答确实回答了这个问题,但从 readability/understandability 的角度来看,当 CSS 有您需要的东西时诉诸于编写 XPath 查询通常不是最好的主意。
CSS 有许多属性选择器,通常对测试最有用的是
- =匹配
- *=包含
- ^= 以 开头
- ~=空格分隔匹配
你可以在https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors
看到完整的集合在这种情况下,这意味着您可以执行以下任一操作
assert_selector('input[placeholder*="hello"]') # contains 'hello'
assert_selector('input[placeholder~="hello"]') # contains the word 'hello'
assert_selector('input[placeholder^="hello"]') # starts with 'hello'
另一种选择是利用 Capybara :field 选择器有一个 placeholder
过滤器 - https://github.com/teamcapybara/capybara/blob/master/lib/capybara/selector.rb#L34 - 它采用正则表达式 - 所以你可以做
assert_field(placeholder: /hello/)
与
相同assert_selector(:field, placeholder: /hello/)