如何使用Mechanize更改填充输入元素的值?
我想要做的是将游侠http://d.pr/i/nMuM设置为介于2010和默认值2014之间,以便正确的卡车显示进行解析。那可能吗?
我正在关注示例here,但它似乎无效。
这是代码:
require "mechanize"
@url = "https://www.kleyntrucks.nl/vrachtwagens/trekker/"
a = Mechanize.new do |agent|
agent.user_agent_alias = 'Mac Safari'
agent.follow_meta_refresh = true
end
a.get(@url) do |page|
bouwjaar_range_field = page.search("#imprp0")
bouwjaar_range_details = bouwjaar_range_field.search(".details")
input = bouwjaar_range_details.search("input")[0]
input.value = "2010"
end
这是输出:
/Users/username/Dropbox/Development/Rails/folder/lib/tasks/experiment.rb:20:in `block in <main>': undefined method `value=' for #<Nokogiri::XML::Element:0x007fd4ab0fd9a8> (NoMethodError)
from /Users/username/.rvm/gems/ruby-2.0.0-p353@global/gems/mechanize-2.7.3/lib/mechanize.rb:442:in `get'
from /Users/username/Dropbox/Development/Rails/folder/lib/tasks/experiment.rb:10:in `<main>'
[Finished in 1.9s with exit code 1]
pp input
给出了以下输出:
#(Element:0x3fe33c82ab68 {
name = "input",
attributes = [
#(Attr:0x3fe33c869430 { name = "type", value = "hidden" }),
#(Attr:0x3fe33c8692a0 { name = "name", value = "slider_from" }),
#(Attr:0x3fe33c869278 { name = "value", value = "1968" })]
})
puts input
给出了以下输出:
<input type="hidden" name="slider_from" value="1968">
有什么想法吗?
答案 0 :(得分:2)
这里有很多问题。首先,您的表单不是表单,而是输入。甚至不是“形式”输入,而是“dom节点”输入。理解差异后,找到表单并使用以下值设置值:
form['key'] = 'value'
答案 1 :(得分:0)
看起来元素具有set_attribute
方法。你应该可以做到
form.set_attribute 'value', 1970
并获得正确的结果。
这对我来说过于复杂,但它应该可以解决您当前的问题。 (我和Mechanize一起工作过很多次,虽然不是很近。)