Python点击网页上的按钮(后端)

时间:2014-05-15 03:29:31

标签: python button web login simulation

我正在尝试使用Python来模拟公司电子邮件的登录信息。

脚本工作查找,结果页面显示已登录的标志。

import urllib
import urllib2
import mechanize
import cookielib

br = mechanize.Browser()

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

br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)

br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

br.addheaders = [('User-agent', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)')]

url = 'http://www.company.com/'
form_data = {'name_file': 'THENAME', 'password_field': 'THEPASSWORD'}
params = urllib.urlencode(form_data)
response = br.open(url, params)

但是,我需要点击网页上的“GoTo电子邮件”按钮才能进入电子邮件信息中心。请注意,在单击按钮之前和之后,网址不会更改,也不会重定向到任何其他页面。

HTML脚本如下所示。我认为这是一个按钮。

id=mail1_btnGoto class=btn onmouseover="this.className='btnOver'" onmouseout="this.className='btn'" name=mail1$btnGoto value="GoTo Email" type=submit>

我想用 winapi 来模拟鼠标点击,但这很愚蠢,因为它只控制鼠标在前端。在这种情况下,Selenium不是解决方案,因为我希望脚本在后端运行。

如何在网页上显示“点击”按钮?

1 个答案:

答案 0 :(得分:1)

电子邮件仪表板似乎是由Javascript驱动的,因此您无法在不评估脚本的情况下使用winapi来模拟mouseclick

通常有两种解决方法:

  1. 使用全功能浏览器驱动程序。如上所述,selenium是许多编程语言的不错选择。 webdriver不需要手动打开浏览器,可以通过脚本完全控制。您可以尝试使用ghost driver。它使用PhantomJS并且应该在后端服务器上运行。(但是需要安装phantomjs)

  2. 模拟请求。因为登录通常会调用http / https请求。您可以使用python来模拟该请求。您可以使用http {@}},fiddler或Chrome网络检查器等http debbuging工具来捕获浏览器发送到身份验证服务器的信息。

  3. 我试图具体而详细。但是由于网络爬行的多样性,一步一步的指南是我无法实现的。