为什么这个 ruby 机械化代码会抛出未定义的方法?
Why does this ruby mechanize code throw undefined method?
我正在接受 ruby 机械化并从一开始就被绊倒了...
为什么这个代码:
#!/usr/bin/ruby env
require 'rubygems'
require 'mechanize'
agent = Mechanize.new
page = agent.get('http://linkedin.com/')
#pp page
form = page.form.first
#form.fields.each { |f| puts f.name }
#pp page
吐出来...
/home/ubuntu/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mechanize-2.7.4/lib/mechanize/form.rb:217:in `method_missing': undefined method `first' for #<Mechanize::Form:0x007f9f2cf1ced0> (NoMethodError)
from 1-li.rb:10:in `<main>'
您想使用 forms
方法而不是 form
方法。
根据 documentation、forms
方法 returns "a list of all form tags",然后您可以方法链 first
方法。例如:
require 'mechanize'
mechanize = Mechanize.new
page = mechanize.get('http://www.w3schools.com/html/html_forms.asp')
forms = page.forms
forms.class #=> Array
form = forms.first
form.class #=> Mechanize::Form
要获取页面上的第一个表单,请使用 page.form
或 page.forms.first
我正在接受 ruby 机械化并从一开始就被绊倒了...
为什么这个代码:
#!/usr/bin/ruby env
require 'rubygems'
require 'mechanize'
agent = Mechanize.new
page = agent.get('http://linkedin.com/')
#pp page
form = page.form.first
#form.fields.each { |f| puts f.name }
#pp page
吐出来...
/home/ubuntu/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mechanize-2.7.4/lib/mechanize/form.rb:217:in `method_missing': undefined method `first' for #<Mechanize::Form:0x007f9f2cf1ced0> (NoMethodError)
from 1-li.rb:10:in `<main>'
您想使用 forms
方法而不是 form
方法。
根据 documentation、forms
方法 returns "a list of all form tags",然后您可以方法链 first
方法。例如:
require 'mechanize'
mechanize = Mechanize.new
page = mechanize.get('http://www.w3schools.com/html/html_forms.asp')
forms = page.forms
forms.class #=> Array
form = forms.first
form.class #=> Mechanize::Form
要获取页面上的第一个表单,请使用 page.form
或 page.forms.first