2

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

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

这是我的代码自动取款机:

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)

对不起,基本问题,我已经进行了搜索,但找不到任何东西。

提前致谢!

4

1 回答 1

7

问题

您的代码非常接近。问题是这条线:

$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 的隐藏)

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

#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
于 2012-11-08T02:17:36.547 回答