以下html
<p>
<strong>Name:</strong>
12121
</p>
如何使用Watir访问“12121”文本?
答案 0 :(得分:3)
要获取子文本12121,请使用正则表达式。
gsub执行搜索和替换操作。它将搜索所有非数字字符(/ \ D /)并替换为给定的字符串。
在这种情况下,我们不会给任何字符串替换。
= browser.p.text.gsub(/ \ D /,“”)
=&GT; “12121”
答案 1 :(得分:1)
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"
答案 2 :(得分:1)
虽然我认为解析段落元素文本是最简单的,但如果你真的只想获得文本节点,你可以使用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"