Ruby 如何获取包含前导空格的水豚元素的文本。
我正试图编写一个rspec/capybara/selenium规范来验证空白。基本上,我有一个可以填写的表单,一旦保存,信息就会呈现为表中的一行。我遇到的问题是,一旦我到达某个td或span并在其上调用Ruby 如何获取包含前导空格的水豚元素的文本。,ruby,selenium,rspec,capybara,Ruby,Selenium,Rspec,Capybara,我正试图编写一个rspec/capybara/selenium规范来验证空白。基本上,我有一个可以填写的表单,一旦保存,信息就会呈现为表中的一行。我遇到的问题是,一旦我到达某个td或span并在其上调用.text,返回的内容就会被去掉前导和尾随的空白。因此,如果您查看下面的示例,如果我调用find('#one')。text返回的是'FOOO'。我想要返回的是“FOOO”(即包括前导和尾随空格) 福奥 酒吧 浏览器会折叠/忽略前导和尾随空格,因此Capybara也会这样做。如果您希望该空格在浏览
.text
,返回的内容就会被去掉前导和尾随的空白。因此,如果您查看下面的示例,如果我调用find('#one')。text
返回的是'FOOO'
。我想要返回的是“FOOO”
(即包括前导和尾随空格)
福奥
酒吧
浏览器会折叠/忽略前导和尾随空格,因此Capybara也会这样做。如果您希望该空格在浏览器中实际可见,则需要在HTML中将空格替换为不间断空格(),然后Capybara也将返回它们。尝试使用xpath//td[@id='one']/span
@Rajagopalan当问题是文本内容找不到元素时,您认为在这里更改XPath会有什么不同?他没有指向他想要从中提取文本的确切节点。@Rajagopalan,这在这里并不相关,因为如果这造成了不同,那么你只需要期望返回更多的空白(td中的空白)。问题是,正如我在回答中提到的,浏览器在显示HTML文档时会忽略/折叠大多数正常的空白。此外,如果选择确切的元素会产生影响,那么OP最好只使用CSS#one span
,而不是切换到XPath。是吗?您可以通过编写//span[text()='FOOO']
来定位上述文本节点之一吗?@Rajagopalan不可以,因为XPath应用于文本文档。但是,浏览器处理该文档并应用HTML规则来忽略/折叠文档中的大量空格(在浏览器中加载OPs HTML并查看前导和尾随空格是否显示-提示:不显示)。如果我在最新版本的firefox中加载,它会折叠空格,但如果我在firefox ESR上一版本中加载,它不会折叠空格。@Rajagopalan不知道您对FF 52.8.1 ESR做了什么,因为它的行为就像我的当前版本一样(关于显示期间空格折叠)。空白的折叠已经成为HTML规范的一部分很长一段时间了,如果在FF52中没有正确执行,它几乎会破坏所有的网站。我不知道它在我看来是这样的。它的Firefox52.7
<tr id="myRow">
<td id="one">
<span> FOOO </span>
</td>
<td id="two">
<span> BAR </span>
</td>
</tr>