![](/img/trans.png)
[英]Using mechanize to click a button with onclick=“return somejsfunction()”
[英]How to click button if javascript Onclick() is there with mechanize
我正在编写脚本以自动登录到本地域站点,并希望每天填写一些数据。 该站点的第一页是登录页面。 这是登录按钮的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()
我得到的页面是同一登录页面,但显示以下错误:
请填写用户名和密码。
有什么方法可以解决这个问题,或者机械化无法解决? 如果无法使用机械化,请告诉我任何其他方式(任何其他语言)。
而不是使用机械化,我在python中使用了硒 。 这是完美的任务。 机械化是很好的方法,但是另一方面它不支持Java脚本。硒作为Web浏览器中的插件起作用。 如果您需要处理Web自动化中的javascript,我建议您选择硒而不是机械化。
我不是专家,但是您可以使用python请求模块来处理。 ( http://www.python-requests.org/en/latest/user/quickstart/ )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.