如何使用Ruby中的Mechanize提交表单?

如何使用Ruby中的Mechanize提交表单?,ruby,mechanize,Ruby,Mechanize,当我运行此代码时: require 'mechanize' require 'logger' require 'nokogiri' require 'open-uri' agent = Mechanize.new agent.log = Logger.new "mech.log" agent.user_agent_alias = 'Mac Safari' agent.verify_mode = OpenSSL::SSL::VERIFY_NONE page = agent.get('https:

当我运行此代码时:

require 'mechanize'
require 'logger'
require 'nokogiri'
require 'open-uri'

agent = Mechanize.new
agent.log = Logger.new "mech.log"
agent.user_agent_alias = 'Mac Safari'
agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
page = agent.get('https://sarathi.nic.in:8443/nrportal/sarathi/HomePage.jsp')
page = agent.page.links.find{|i| i.text == "Status of Licence"}.click
page.form(:name=>"dlform").field_with(:name=>"dlform:DLNumber").value="TN4020120005045"
page.submit
我得到这个错误:

NoMethodError: undefined method `submit' for #<Mechanize::Page:0x8e644cc>
NoMethodError:for的未定义方法“submit”#

如何解决此问题?

@sudhagar,您应该提交
表格而不是
页面
。还可以将其分解为单独的调用,以获得更清晰的代码,如下所示:

...
form = page.form(:name=>"dlform")
form.field_with(:name=>"dlform:DLNumber").value="TN4020120‌​005045"
form.submit 
...

您可能希望提交表单,而不是页面。只需将提交与前一行链接为page.form(:name=>“dlform”)。字段_与(:name=>“dlform:DLNumber”)。value=“tn4020200005045”。submit@Sam这将调用TN4020120‌​提交
@Stefan:My bad,已经有一段时间没有接触机械化了。然后你能不能把它分成几个单独的调用,比如form=page.form(:name=>“dlform”);form.field_带有(:name=>“dlform:DLNumber”).value=“TN4020120‌​005045"; form.submit?@Sam看起来不错,尽管我没有安装Mechanize来测试它。也许你应该把它贴出来作为答案?