繁体   English   中英

如何在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

虽然 Lam Phan 的回答确实回答了这个问题,但从可读性/可理解性的角度来看,当 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/)

您可以使用xpath并验证是否存在占位符contains “hello”的input元素

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM