require ‘rubygems’
require ‘mechanize’
agent = WWW::Mechanize.new
agent.user_agent_alias = ‘Windows IE 7’
page = agent.post(“http://sso.chinaunix.net/Login?”)
form = page.forms[0]
form[‘login_name’] = ‘luofeiyu’
form[‘password’] = ‘qwerty’
page = agent.submit(form)
page.save(“/home/pt/web”)
irb(main):166:0> form = page.forms[0]
=> nil
irb(main):167:0> form[‘login_name’] = ‘luofeiyu’
NoMethodError: undefined method []=' for nil:NilClass from (irb):167 from :0 irb(main):168:0> form['password'] = 'qwerty' NoMethodError: undefined method []=’ for nil:NilClass
from (irb):168
from :0
irb(main):169:0> page = agent.submit(form)
ArgumentError: wrong number of arguments (0 for 1)
from /var/lib/gems/1.8/gems/mechanize-1.0.0/lib/mechanize.rb:368:in
method' from /var/lib/gems/1.8/gems/mechanize-1.0.0/lib/mechanize.rb:368:in submit’
from (irb):169
from :0
would you mind to tell me what wrong is?
On Sun, Jun 20, 2010 at 11:45:31AM +0900, Pen T. wrote:
irb(main):166:0> form = page.forms[0]
=> nil
This line ^^^^^
This page appears to have no forms, so it returned nil.
view-page source ,you can see :
<p class="title">欢迎您<br />å·²ç»æ‹¥æœ‰ChinaUnix叿ˆ·</p>
<p class="mt8">
用户å:<input type="text" id="login_name" name="login_name"
size=“20” maxlength=“30” class=“inputText1 {required:true,minLength:2}”
value="" />
密 ç :
</p>
<p class="mt8">
<input type="checkbox" value="30" id="furmcookie"
name=“furmcookie”>è®°ä½æˆ‘的密ç
è¿˜ä¸æ˜¯ChinaUnix会员?立å³å…费注册ï¼
<p class="mt12 tr"><input type="button" value="注 册"
class=“button1”
onclick=“javascript:window.location.href=’/Register’”/>
<dl class="lh18 mt10">
<dt class="bold">ä¸ºä»€ä¹ˆè¦æ³¨å†Œï¼Ÿ</dt>
<dd>
æ‚¨åªæœ‰æ³¨å†Œæˆä¸ºChinaUnix会员,æ‰å¯ä»¥ç™»å½•论å›ã€åšå®¢å‘言交æµï¼Œå¹¶å¯ä»¥äº«ç”¨ChinaUnixçš„å„项æœåŠ¡ã€‚
</dd>
</dl>
</div>
<div class="forget">
<p class="title">å¿˜è®°å¯†ç æˆ–ID</p>
<p class="con">å¦‚æžœä½ å¿˜è®°äº†ä½ çš„å¯†ç ,请在这里找回密ç 。</p>
<p class="tr mt8"><input type="button" value="找回密ç "
class=“button1”
onclick=“javascript:window.location.href=’/ForgotPassword’”/>
</div>
</form>
there is form in it.