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:" 

121211 つ (または複数) のStringメソッドを取得するには、たとえばString#splitString#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 に答える