Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何获取包含前导空格的水豚元素的文本。_Ruby_Selenium_Rspec_Capybara - Fatal编程技术网

Ruby 如何获取包含前导空格的水豚元素的文本。

Ruby 如何获取包含前导空格的水豚元素的文本。,ruby,selenium,rspec,capybara,Ruby,Selenium,Rspec,Capybara,我正试图编写一个rspec/capybara/selenium规范来验证空白。基本上,我有一个可以填写的表单,一旦保存,信息就会呈现为表中的一行。我遇到的问题是,一旦我到达某个td或span并在其上调用.text,返回的内容就会被去掉前导和尾随的空白。因此,如果您查看下面的示例,如果我调用find('#one')。text返回的是'FOOO'。我想要返回的是“FOOO”(即包括前导和尾随空格) 福奥 酒吧 浏览器会折叠/忽略前导和尾随空格,因此Capybara也会这样做。如果您希望该空格在浏览

我正试图编写一个rspec/capybara/selenium规范来验证空白。基本上,我有一个可以填写的表单,一旦保存,信息就会呈现为表中的一行。我遇到的问题是,一旦我到达某个td或span并在其上调用
.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>