如何获得隐藏元素的价值? (的Watir)

时间:2012-11-08 01:07:05

标签: html ruby-on-rails ruby watir

只是想知道,如何使用watir获取隐藏元素的值?这是元素:

<input type="hidden" value="randomstringhere" id="elementid" name="elementname" />

这是我的代码atm:

require "rubygems"
require "watir-webdriver"
$browser = Watir::Browser.new :ff
$browser.goto("http://www.site.com")
$grabelement = $browser.hiddens(:id, "elementid")
$blah = $grabelement.attribute_value("value")
puts $blah

这会卡在最后一行,返回

code.rb:6:in `<main>': undefined method `attribute_value' for #<Watir::HiddenCollection:0x8818adc> (NoMethodError)

对不起基本问题,我进行了搜索,找不到任何内容。

提前致谢!

1 个答案:

答案 0 :(得分:6)

<强>问题

您的代码非常接近。问题是这一行:

$grabelement = $browser.hiddens(:id, "elementid")

这一行表示获取一个具有id“elementid”的隐藏元素的集合(即所有)。如错误消息所示,该集合没有attribute_value方法。只有元素(即集合中的对象)才有方法。

解决方案(假设单个隐藏的匹配ID)

假设只有一个,你应该使用hidden代替hiddens来获得第一场比赛(即放弃s):

$grabelement = $browser.hidden(:id, "elementid")
$blah = $grabelement.value
puts $blah
#=> "randomstringhere"

请注意,对于value属性,您只能.value而不是.attribute_value('value')

解决方案(如果有多个匹配ID的hiddens)

如果实际上有多个,那么你可以遍历集合或只是获得第一个,等等:

#Iterate over each hidden that matches
browser.hiddens(:id, "elementid").each{ |hidden| puts hidden.value }

#Get just the first hidden in the collection
browser.hiddens(:id, "elementid").first.value