Capybara / Ruby - 尝试从不可见元素中获取文本,然后将其转换为字符串

问题描述 投票:0回答:1

我正在尝试从属于不可见元素的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输出是什么

ruby rspec automated-tests capybara
1个回答
1
投票

默认情况下,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,很难说什么会更好。

© www.soinside.com 2019 - 2024. All rights reserved.