次のhtmlで
<p>
<strong>Name:</strong>
12121
</p>
Watir を使用して "12121" テキストにアクセスするにはどうすればよいですか?
次の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
1 つ (または複数) の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"