将登录表单与Mechanize一起使用

编程入门 行业动态 更新时间:2024-10-25 14:34:13
本文介绍了将登录表单与Mechanize一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我知道在Stackoverflow上有与此类似的帖子,但是我仍然无法弄清楚我的尝试出了什么问题.

I know there are very similar posts to this on Stackoverflow but I still can't seem to figure out what is wrong with my attempt.

# login to the site mech.get(base_URL) do |page| l = page.form_with(:action => "/site/login/") do |f| username_field = f.field_with(:name => "LoginForm[username]") username_field.value = userName password_field = f.field_with(:name => "LoginForm[password]") password_field.value = password f.submit end end

这是我的错误:

rb:18:in `block (2 levels) in <main>': undefined method `field_with' for nil:NilClass (NoMethodError)

这是HTML

<div class="bucketbody"> <div class="form padding10"> <form id="login-form" action="/site/login" method="post"> <div class="row"> <p class="note float_right">Fields with <span class="required">*</span> are required.</p> <label for="LoginForm_username" class="required">Email address <span class="required">*</span></label> <input class="width_66per" autofocus="" name="LoginForm[username]" id="LoginForm_username" type="text"> </div> <div class="row"> <label for="LoginForm_password" class="required">Password <span class="required">*</span></label> <input class="width_66per" name="LoginForm[password]" id="LoginForm_password" type="password"> </div> <div class="row rememberMe nolabel"> <span class="field"><input id="ytLoginForm_rememberMe" value="0" name="LoginForm[rememberMe]" type="hidden"><input name="LoginForm[rememberMe]" id="LoginForm_rememberMe" value="1" type="checkbox"> <label for="LoginForm_rememberMe">Remember me on this computer</label> </span> </div> <p class="note"><a href="test.XXXXXXXX/user/reset">Forgot your password?</a></p> <div class="row buttons" style="padding-left: 0px;"> <input class="pushButton" name="yt0" value="Login" type="submit"> </div> </form> </div><!-- form --> </div>

p页

#<Mechanize::Page {url #<URI::HTTP:0x225ce70 URL:xxxxxx/>} {meta_refresh} {title "xxxxxxxxxxx | xxxxxxxxx"} {iframes} {frames} {links #<Mechanize::Page::Link "\r\n " "/"> #<Mechanize::Page::Link "About xxxxxx" "/features"> #<Mechanize::Page::Link "xxxxx Overview" "/features"> #<Mechanize::Page::Link "xxxxxxx for Associations" "/associations"> #<Mechanize::Page::Link "xxxxxx For Education" "/education"> #<Mechanize::Page::Link "FAQ" "/faq"> #<Mechanize::Page::Link "About Us" "/aboutus"> #<Mechanize::Page::Link "About Us" "/aboutus"> #<Mechanize::Page::Link "News & Events" "/news-events"> #<Mechanize::Page::Link "Environmental Commitment" "/environment"> #<Mechanize::Page::Link "Our Team" "/ourteam"> #<Mechanize::Page::Link "The xxxxxxxxxx" "/xxxxxxxxxx"> #<Mechanize::Page::Link "Free Trial" "/freetrial"> #<Mechanize::Page::Link "Contact" "/contacts"> #<Mechanize::Page::Link "Contact us" "/contacts"> #<Mechanize::Page::Link "xxxxxxxxxx" "www.xxxxxxxx/services/web-services/"> #<Mechanize::Page::Link "inquire@xxxxxxxxx" "mailto:inquire@xxxxxxxxxxx"> #<Mechanize::Page::Link xxxxxx" "www.xxxxxxxxx/"> #<Mechanize::Page::Link "Technology Association of Oregon" "www.techoregon/"> #<Mechanize::Page::Link "" "www.terrapass/"> #<Mechanize::Page::Link "" "www.arborday/">} {forms}>

推荐答案

您正在使它变得比所需的更为复杂:

You're making it more complicated than it needs to be:

page = mech.get base_URL form = page.form # page.forms[1], etc. form['LoginForm[username]'] = userName form['LoginForm[password]'] = password l = form.submit form.button

更多推荐

将登录表单与Mechanize一起使用

本文发布于:2023-10-09 18:06:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1476408.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:表单   Mechanize

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!