Html 如何获取隐藏元素的值?(瓦蒂尔)

Html 如何获取隐藏元素的值?(瓦蒂尔),html,ruby-on-rails,ruby,watir,Html,Ruby On Rails,Ruby,Watir,只是想知道,如何使用watir获得隐藏元素的值?这是一个要素: <input type="hidden" value="randomstringhere" id="elementid" name="elementname" /> 这会卡在最后一行,在那里返回 code.rb:6:in `<main>': undefined method `attribute_value' for #<Watir::HiddenCollection:0x8818adc> (N

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

<input type="hidden" value="randomstringhere" id="elementid" name="elementname" />
这会卡在最后一行,在那里返回

code.rb:6:in `<main>': undefined method `attribute_value' for #<Watir::HiddenCollection:0x8818adc> (NoMethodError)
code.rb:6:in`':为#(NoMethodError)未定义的方法“attribute_value”
很抱歉问了个基本问题,我已经搜索过了,什么都找不到


提前谢谢

问题

您的代码非常接近。问题在于线路:

$grabelement = $browser.hiddens(:id, "elementid")
这一行表示获取id为“elementid”的隐藏元素的集合(即全部)。正如错误消息所说,集合没有属性值方法。只有元素(即集合中的对象)具有该方法

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

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

请注意,对于value属性,您可以只执行
.value
而不是
.attribute\u 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

所有的全局变量是怎么回事?这在Ruby脚本中是一个坏兆头。是的,对不起,我只是暂时把它们放在这里,提醒我检查所有的方法-我目前正在分别编写所有的方法,我将检查并修复它们:)我如何单击隐藏元素?我得到了异常-`fxdriver.Premissions.visible':元素当前不可见,因此可能无法与之交互(Selenium::WebDriver::Error::ElementNotVisibleError)。我已经检查过这是唯一一个id为的元素。@stack1,为什么要单击隐藏元素?Watir旨在模拟用户的操作。因为用户不能单击隐藏的元素,所以Watir不允许它。@JustinKo-从图形上说,该元素是文本(人类可以单击),可以从搜索页面中删除条件。人类可以点击这个,但瓦蒂尔不能?有办法解决这个问题吗?谢谢。@stack1,我想我们用的是不同的术语。这个问题中的隐藏元素是指
元素。据我所知,没有浏览器显示这种输入类型。因此,如果一个人能看到/点击它,它可能是其他东西。您应该创建一个新问题,以便我们可以看到如何重现该问题。@JustinKo-好的。谢谢行。我看到输入类型=隐藏在那里。
$grabelement = $browser.hidden(:id, "elementid")
$blah = $grabelement.value
puts $blah
#=> "randomstringhere"
#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