Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用Mechanize登录网站填写表格?_Ruby_Forms_Mechanize - Fatal编程技术网

Ruby 使用Mechanize登录网站填写表格?

Ruby 使用Mechanize登录网站填写表格?,ruby,forms,mechanize,Ruby,Forms,Mechanize,我正在尝试使用Mechanize登录一个站点 我试图填写的表单是页面上唯一的一个,名为admin login。用户名字段的名称为un,密码字段的名称为pw 我的错误输出是: myserver:in `addProduct': undefined local variable or method `form_name' for main:Object (NameError) from login.rb:82:in `<main>' 我是不是遗漏了什么?有人告诉我,这很容易理解,但我真

我正在尝试使用Mechanize登录一个站点

我试图填写的表单是页面上唯一的一个,名为admin login。用户名字段的名称为un,密码字段的名称为pw

我的错误输出是:

myserver:in `addProduct': undefined local variable or method `form_name' for main:Object (NameError) from login.rb:82:in `<main>'

我是不是遗漏了什么?有人告诉我,这很容易理解,但我真的很难掌握机械化的基础知识。

我会使用更像:

admin_login = page.form( 'admin-login' )
form_name = 'username'
form_pass = 'password'

page = agent.submit( form_name, form_pass, admin_login.buttons.first )
不能用“.”命名变量:

form_name.un = 'username'
form_pass.pw = 'password'
Ruby将假定您正在讨论一个名为form_name或form_pass的类的实例,该类的方法分别称为un和pw。而且,由于这些都没有定义,Ruby抱怨道

相反,使用一个简单的变量名,Ruby会很高兴


另外,请注意,correctureURL_form之类的变量名与Ruby不同。我们使用snake_case名称作为实例变量。

好的,我已经让它工作了。这是我更正的代码

def addProduct

agent = Mechanize.new

page = agent.get( 'correctURL' )
correctURL_form = page.form( 'admin-login' )
correctURL_form.un = 'username'
correctURL_form.pw = 'password'

page = agent.submit( correctURL_form, correctURL_form.buttons.first )
puts page.body

end

这获得了成功页面的输出。谢谢大家的帮助

form_名称和form_通行证来自哪里?您尝试将它们当作具有setter的对象的实例来使用,但不显示它们的实例化位置。Ruby也在抱怨同样的事情,我把它们写成了变量。我应该使用表单中的内容吗?我以为每个结尾的.un和.pw都得到了我分配文本的表单字段。谢谢。我刚为这个问题编了一张表格。我试图去掉.un和.pw,但得到了这个错误,/var/lib/gems/1.9.1/gems/mechanize-2.7.1/lib/mechanize.rb:535:in submit:未定义的方法为username:String NoMethodError添加按钮到查询
def addProduct

agent = Mechanize.new

page = agent.get( 'correctURL' )
correctURL_form = page.form( 'admin-login' )
correctURL_form.un = 'username'
correctURL_form.pw = 'password'

page = agent.submit( correctURL_form, correctURL_form.buttons.first )
puts page.body

end