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

Joe*_*Joe 2 html ruby ruby-on-rails watir

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

<input type="hidden" value="randomstringhere" id="elementid" name="elementname" />
Run Code Online (Sandbox Code Playgroud)

这是我的代码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
Run Code Online (Sandbox Code Playgroud)

这会停留在它返回的最后一行

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

对不起基本问题,我有一个搜索,找不到任何东西.

提前致谢!

Jus*_* Ko 7

问题

你的代码非常接近.问题是这条线:

$grabelement = $browser.hiddens(:id, "elementid")
Run Code Online (Sandbox Code Playgroud)

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

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

假设只有一个,你应该使用hidden而不是hiddens(即删除s)获得第一个匹配:

$grabelement = $browser.hidden(:id, "elementid")
$blah = $grabelement.value
puts $blah
#=> "randomstringhere"
Run Code Online (Sandbox Code Playgroud)

请注意,对于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
Run Code Online (Sandbox Code Playgroud)