2013-09-05 80 views
0

我正在寫腳本自動登錄到本地域的網站,並希望填寫一些日常的基礎數據。該網站的第一頁是登錄頁面。這是登錄按鈕的html代碼:如何點擊按鈕,如果JavaScript的Onclick()與機械化

<td class="leftbdr" nowrap><input name="loginButton" type="submit" 
    class="formStylebuttonact" value='Login' title='Login' 
    onClick="return checkForNullInLogin(this.form)"></td> 

查看源代碼checkForNullInLogin()我寫了這個代碼:

import urllib 
    import re 
import mechanize 
from base64 import b64encode 
import cookielib 

cj = cookielib.LWPCookieJar() 
br.set_cookiejar(cj) 

# Browser options 
br.set_handle_equiv(True) 
br.set_handle_gzip(True) 
br.set_handle_redirect(True) 
br.set_handle_referer(True) 

#local website 
url = 'http://go.cabs' 
username='user' 
password='pass' 

br= mechanize.Browser() 

b64login = b64encode('%s:%s' % (username, password)) 
br.set_handle_robots(False) 
br.addheaders = [('User-agent', 'Firefox')] 

br = mechanize.Browser() 
br.addheaders.append( 
    ('Authorization', 'Basic %s' % b64login) 
) 

response = br.open("http://go/cabs"); 
#print response.code 
#print response.geturl() 

br.select_form("login") 
br.form['j_username'] = 'usr' 
       br.form['j_password'] = 'pass' 
br.form['domain'] = ['1'] 
#choosing AP domain 

#print br.form['domain'] 

#print br.form['j_username'] 

#print br.form['j_password'] 

#print br.form['j_username'] + "is and" + br.form['j_password'] 
pag2 = br.submit() 
html2=pag2.read() 

f = open("mechanize_results2.html", "w") 
f.write(html2) 
f.close(); 

#print response.read() 

我得到的頁面是與錯誤相同的登錄頁面:

please fill the username and password.

有什麼辦法解決這個問題或者用機械化它不能做到嗎?如果機械化不可能,請告訴我其他任何方式(任何其他語言)。

回答

1

相反使用機械我在python中使用selenium。這是完成這項任務。機械化是好的,但它不支持Java腳本,另一方面,硒作爲Web瀏覽器中的插件工作。如果你需要在網頁自動化中處理javascript,我會建議去硒而不是機械化。