如何在Ruby中使用mechanize填写登录表单?

如何在Ruby中使用mechanize填写登录表单?,ruby,forms,screen-scraping,mechanize,Ruby,Forms,Screen Scraping,Mechanize,下面是我希望用Mechanize填写的表格;已经尝试过常用的模型(例如:);但是没有成功 <form method="post" action="/sso/login.php" id="form-login-page"> <div id="form-login-container-page" style="color:red;text-align:center;width:100%;margin:10px 0"></div> <input typ

下面是我希望用Mechanize填写的表格;已经尝试过常用的模型(例如:);但是没有成功

<form method="post" action="/sso/login.php" id="form-login-page">
  <div id="form-login-container-page" style="color:red;text-align:center;width:100%;margin:10px 0"></div>
  <input type="hidden" name="minimalist" value="1">
  <input type="hidden" name="SSO_Context" value="/pdf/telecharger2.php?pdfpf=&amp;pdfg=%2Fpdf%2Ftelecharger.php%3Fdir%3DJOURNAL%26file%3D20140603.pdf">
  <div class="clear">&nbsp;</div>
  <label>Email<span>*</span></label>
  <div class="insc-saisie">
    <input class="insc-saisie-champ" type="text" id="login-page" name="login" value="">
  </div>
  <div class="clear">&nbsp;</div>
  <label>Mot de passe<span>*</span></label>
  <div class="insc-saisie">
    <input class="insc-saisie-champ" type="password" id="password-page" name="password"  value="">
  </div>
  <div class="clear">&nbsp;</div>
  <label><input type="checkbox" unchecked=""></label>
  <div class="insc-saisie">Se souvenir</div>
  <div class="clear">&nbsp;</div>
  <label>&nbsp;</label>
  <div class="insc-saisie">
    <a href="javascript:showLostPassForm();">Mot de passe oublié ?</a>
  </div>
  <div class="clear">&nbsp;</div>
  <label>&nbsp;</label>
  <div class="insc-saisie">
    <input class="b-connexion" type="image" src="/img/trans.gif">
  </div>
  <div class="clear">&nbsp;</div>
  <div class="clear">&nbsp;</div>
  <label><span>*</span></label>
  <div class="insc-saisie">Saisie obligatoire</div>
  <div class="clear">&nbsp;</div>
</form>

以下代码应该可以工作:

page = agent.get("your_page_url")

form = page.form_with(:id => 'form-login-page')
form.login = "my_login"
form.password = "my_password"
form.submit

我想知道发生了什么错误。错误输出应该附加到问题中,以找出更好的答案。因此。。什么坏了?对不起,我的错!问题是,我的目标是抓取一个PDF文件,但下载是以登录为条件的,所以当我测试它时,我的代码会将我重定向到登录页面,因此身份验证(填写表单)在那里不起作用。我的第二部分代码(与不需要登录的链接一起工作):@watan={}page.parser.xpath('//th/a')。每个do | link |放置@watan[link.text.strip]=link['href']结束谢谢!与其提供完整的表单,不如将其截断到演示问题所需的最小值。事实上,标签浪费了很多空间,这些标签无法解释你要做什么,也无法解释你要做的事情,甚至超出了最低限度,你会减慢(并阻止)人们试图帮助你的速度。对于您自己的测试,将其减少到一个或两个字段,并针对该字段进行测试。完成这些操作后,添加其他类型的输入和表单元素。继续添加,直到你能处理所有事情。谢谢你,这真的很有帮助!不幸的是,它不起作用;由于第一部分(认证)很好,第二部分也很好(刮擦部分,已经测试过),我怀疑是coockies的问题;已尝试使用“temp\u jar=agent.cookie\u jar.jar”,但不起作用。。有什么提示吗?非常感谢!什么不起作用?你说认证和抓取都可以。两个代码分别工作,但当我把它们放在一起调试时,它们似乎没有链接,因为第二部分(抓取)将我重定向到登录页面;这就是为什么我猜这是一个怪人的问题。谢谢
page = agent.get("your_page_url")

form = page.form_with(:id => 'form-login-page')
form.login = "my_login"
form.password = "my_password"
form.submit