python + selenium 实现自动登录网站

PS:写了2个小时,忘记保存了,无奈只得重写。心痛!

 

最近玩合天,必须每天登录才有合氏币拿,每次输入用户名和密码太麻烦了;想破解某同学的QQ相册,必须先达到登录状态才行啊。

 

环境:win7 64位 + python2.7 + selenium

 

一、安装selenium

Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏览器,完全模拟用户的操作,比如点击链接、输入表单,点击按钮提交等。所以我们使用它可以很方便的来登录网站和QQ空间。

pip install selenium

二、安装浏览器驱动Chromedriver

一开始测试报错,并且Chrome浏览器提示:请停用以开发者模式运行的扩展程序,网址输入框中只显示:data;,如下图:

 

这个问题是由于因为浏览器驱动Chromedriver和Chrome的版本不兼容导致无法通过driver在浏览器输入网址而出现的,解决的办法很简单:查看你Chrome浏览器的版本(帮助 -> 关于Google Chrome(G)),下载对应版本的浏览器驱动就可以了。

下载对应Chromedriver后放到python目录、或者system32下,就可以了。

附表:最新的Chromedriver与Chrome的版本对应关系表:

chromedriver版本支持的Chrome版本
v2.35v62-64
v2.34v61-63
v2.33v60-62
v2.32v59-61
v2.31v58-60
v2.30v58-60
v2.29v56-58
v2.28v55-57
v2.27v54-56
v2.26v53-55
v2.25v53-55
v2.24v52-54
v2.23v51-53
v2.22v49-52
v2.21v46-50
v2.20v43-48
v2.19v43-47
v2.18v43-46
v2.17v42-43
v2.13v42-45
v2.15v40-43
v2.14v39-42
v2.13v38-41
v2.12v36-40
v2.11v36-40
v2.10v33-36
v2.9v31-34
v2.8v30-33
v2.7v30-33
v2.6v29-32
v2.5v29-32
v2.4v29-32

不同版本的Chromedriver都可以通过这里链接下载:

http://chromedriver.storage.googleapis.com/index.html

 

我下载的是chromedriver win32.zip

 

三、模拟登录QQ空间

有个关键点得注意,在Web应用中经常会遇到frame/iframe 表单嵌套页面的应用,QQ空间就是这样的,由于WebDriver 只能在一个页面上对元素识别与定位,对于frame/iframe 表单内嵌页面上的元素无法直接定位。这时就需要通过switch_to.frame()方法将当前定位的主体切换为frame/iframe 表单的内嵌页面中。

不废话,直接上码。

#-*- coding:utf8 -*-

# 导入selenium2中的webdriver库
from selenium import webdriver

# 实例化出一个Firefox浏览器 
driver = webdriver.Chrome()

# 设置浏览器窗口的位置和大小
driver.set_window_position(20,40)
driver.set_window_size(1100,700)

# 打开一个页面(QQ空间登录页)
driver.get("http://qzone.qq.com")

# 登录表单在页面的框架中中,所以要切换到该框架
driver.switch_to_frame('login_frame')

# 通过使用选择器选择到表单元素进行模拟输入和点击按钮提交
driver.find_element_by_id('switcher_plogin').click()
driver.find_element_by_id('u').clear()
driver.find_element_by_id('u').send_keys('1650277972')
driver.find_element_by_id('p').clear()
driver.find_element_by_id('p').send_keys('*********')#password
driver.find_element_by_id('login_button').click()

# do something

# 退出窗口
#driver.quit()

 录了一个gif,但是这个 gif 好慢啊,应该是录制软件的问题。

 

四、模拟登录合天智汇(可以赚币啦^_^)

通过使用选择器选择元素进行模拟输入和点击按钮提交,不用切换frame/iframe了,要简单一点,连form都没有。
直接上码
#-*- coding:utf8 -*-

# 导入selenium2中的webdriver库
from selenium import webdriver

# 实例化出一个Firefox浏览器 
driver = webdriver.Chrome()

# 设置浏览器窗口的位置和大小
driver.set_window_position(20,40)
driver.set_window_size(1100,700)

# 打开一个页面(合天登录页)
driver.get("http://www.hetianlab.com/loginLab.do")


# 通过使用选择器选择元素进行模拟输入和点击按钮提交
driver.find_element_by_id('userEmail').clear()
driver.find_element_by_id('userEmail').send_keys('17690764155')
driver.find_element_by_id('passwordIn').clear()
driver.find_element_by_id('passwordIn').send_keys('**********')
driver.find_element_by_id('registButIn').click()

# do something

# 退出窗口
#driver.quit()
就不录gif了,偷个懒。
 

THE END

转载于:https://www.cnblogs.com/liuxingbusi/p/9278290.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值