3

在下面的 html

<p>
<strong>Name:</strong>
12121
</p>

如何使用 Watir 访问“12121”文本?

4

3 回答 3

3

要获取潜文本 12121,请使用正则表达式。
gsub 执行搜索和替换操作。它将搜索所有非数字字符(/\D/)并替换为给定的字符串。在这种情况下,我们不提供任何要替换的字符串。


=browser.p.text.gsub(/\D/, "")
=> "12121"

于 2013-01-09T11:57:31.367 回答
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"
于 2013-01-10T16:32:23.230 回答
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"
于 2013-01-09T10:31:06.963 回答