【问题标题】:How to click button if javascript Onclick() is there with mechanize如果javascript Onclick()存在机械化,如何单击按钮
【发布时间】:2013-09-05 12:25:09
【问题描述】:

我正在编写脚本以自动登录到本地域站点,并希望填写一些日常基本数据。该站点的第一页是登录页面。这是登录按钮的html代码:

<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()

我得到的页面与错误的登录页面相同:

请填写用户名和密码。

有什么办法可以解决这个问题,或者机械化无法解决?如果机械化无法实现,请告诉我任何其他方式(任何其他语言)。

【问题讨论】:

    标签: javascript python html forms mechanize


    【解决方案1】:

    我在 python 中使用了selenium,而不是使用机械化。这是这项任务的完美选择。 mechanize 很好,但另一方面它不支持 java 脚本 selenium 作为 Web 浏览器中的插件工作。如果您需要在网络自动化中处理 javascript,我建议您使用 selenium 而不是机械化。

    【讨论】:

      【解决方案2】:

      我不是专家,但这可能是您可以使用 python 请求模块处理的问题。 (http://www.python-requests.org/en/latest/user/quickstart/)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-20
        • 1970-01-01
        • 1970-01-01
        • 2012-09-08
        • 1970-01-01
        相关资源
        最近更新 更多