我正在尝试从属于不可见元素的CSS选择器中获取特定的文本值。之后,我想将文本(从元素)转换为字符串,以便稍后使用切片方法。
隐形元素我想出了如何找到但是我找不到获取Text然后将其转换为字符串的方法。
我想要的文字在下面的p中(在这种情况下,3个cartões)
<p class="list-header-num-cards hide js-num-cards">3 cartões</p>
--
CSS选择器是<#board > div:nth-child(1) > div.list.js-list-content > div.list-header.js-list-header.u-clearfix.is-menu-shown > p
我已经尝试过如下命令:
var = find('#board > div:nth-child(1) > div.list.js-list-content > div.list-header.js-list-header.u-clearfix.is-menu-shown > p', visible: false).value
var = find('#board > div:nth-child(1) > div.list.js-list-content > div.list-header.js-list-header.u-clearfix.is-menu-shown > p', visible: false).text
但是var变量没有接收Text值并且测试正在通过。
我尝试使用puts var
输出是什么
默认情况下,text
方法仅返回可见文本,因为在测试应用程序/站点时,您应该只关心用户可以看到的内容。要获取不可见的文本,您可以将:all
传递给text方法
find('#board > div:nth-child(1) > div.list.js-list-content > div.list-header.js-list-header.u-clearfix.is-menu-shown > p', visible: false).text(:all)
https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Node/Element#text-instance_method
另外,请注意,使用特定于您的CSS选择器将导致非常脆弱的测试。选择器的所有类和元素类型部分是否真的是必要的,或者像#board > :nth-child(1) .list-header p
那样更简单一些?即使这可能比你需要的更具体,但没有看到实际的HTML,很难说什么会更好。