在下面的 html
<p>
<strong>Name:</strong>
12121
</p>
如何使用 Watir 访问“12121”文本?
要获取潜文本 12121,请使用正则表达式。
gsub 执行搜索和替换操作。它将搜索所有非数字字符(/\D/)并替换为给定的字符串。在这种情况下,我们不提供任何要替换的字符串。
=browser.p.text.gsub(/\D/, "")
=> "12121"
虽然我认为解析段落元素文本是最简单的,但如果你真的只想获取文本节点,你可以使用 javascript。
如果您知道文本将始终是段落的最后一部分,您可以这样做:
browser.execute_script("return arguments[0].lastChild.nodeValue", browser.p)
#=> "12121"
如果结构可以改变并且你想要段落元素的所有文本,没有子元素的文本,你可以概括它:
get_text_node_script = <<-SCRIPT
var nodes = arguments[0].childNodes;
var result = "";
for(var i = 0; i < nodes.length; i++) {
if(nodes[i].nodeType == Node.TEXT_NODE) {
result += nodes[i].nodeValue;
}
}
return result
SCRIPT
browser.execute_script(get_text_node_script, browser.p)
#=> "12121"
browser.p.text
返回"Name: 12121"
和browser.p.strong.text
返回"Name:"
。
> browser.p.text
=> "Name: 12121"
> browser.p.strong.text
=> "Name:"
要获得12121
一个(或多个)String方法,可以使用,例如String#split然后String#lstrip。
> long = b.p.text
=> "Name: 12121"
> short = b.p.strong.text
=> "Name:"
> long.split(short)
=> ["", " 12121"]
> long.split(short)[1]
=> " 12121"
> long.split(short)[1].lstrip
=> "12121"