只是想知道,如何使用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)
对不起基本问题,我进行了搜索,找不到任何内容。
提前致谢!
答案 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