selenium+python实现自动化登录的方法


Posted in Python onSeptember 04, 2018

Selenium Python 提供了一个简单的API 便于我们使用 Selenium WebDriver编写 功能/验收测试。 通过Selenium Python的API,你可以直观地使用所有的 Selenium WebDriver 功能 。Selenium Python提供了一个很方便的接口来驱动 Selenium WebDriver , 例如Firefox、Chrome、Ie,以及Remote,目前支持的python版本有2.7或3.2以上.

selenium 可以自动化测试、抢票、爬虫等工作。初次了解,现在模拟登录百度——即自动打开浏览器、自动输入账号密码并提交进行登录。

工作需要实现一个微博自动登录的操作,在网上差了一些资料,决定使用selenium+python实现

selenium 是一个web的自动化测试工具,主流一般配合java或者python使用,我这里使用的是python,可支持的浏览器基本包括所有主流浏览器IE、Mozilla Firefox、Google Chrome。

安装过程不再赘述,但是后续使用时,发现很多报错与版本兼容性有关,因此这里列出可用的版本搭配:

python2.7

selenium3.0.2

火狐驱动geckodriver.exe  版本v0.14.0  (使用高版本会出现异常报错)

火狐浏览器52.0.2 (32 位)  (版本太低或53的最新版本,都会报错)

#encoding=utf-8
from selenium import webdriver 
import time 
import os

#模拟登陆weibo 

def getCookies(weibo):
  """ 获取Cookies """
  cookies = []
  driver = webdriver.Firefox()
  time.sleep(3)  #sleep一下,否则有可能报错
  driver.get("https://weibo.com/login/")
  #cur_path=os.getcwd()
  #fileSuc = open(cur_path+"/login.html", 'w')
  #fileSuc.write(driver.page_source)
  #用户名 密码 
  elem_user = driver.find_element_by_xpath('//input[@id="loginname"]') 
  elem_user.send_keys('*****@163.com') #浏览器版本不匹配的时候这里可能报错
  elem_pwd = driver.find_element_by_xpath('//input[@type="password"]')
  elem_pwd.send_keys('*****')
  
  commit = driver.find_element_by_xpath('//a[@node-type="submitBtn"]')
  commit.click()
  time.sleep(3)
  #fileSuc1 = open(cur_path+"/weibo2.html", 'w')
  #fileSuc1.write(driver.page_source)
  #print driver.title 
  #登录成功后获取cookie
  cookie = {}
  if "微博-随时随地发现新鲜事" in driver.title:
    for elem in driver.get_cookies():
      cookie[elem["name"]] = elem["value"]
    if len(cookie) > 0:
      logger.warning("Get Cookie Successful: %s" % account)
      cookies.append(cookie)
      continue
  else:
    logger.warning("Get Cookie Failed: %s!" % account)
  
  driver.close() 
  driver.quit() 
  return cookies

cookies = getCookies(myWeiBo)
print cookies
logger.warning("Get Cookies Finish!( Num:%d)" % len(cookies))

find_element_by_xpath用来定位控件的位置,定位不到的时候,可以把网页的代码保存下来看看是否有对应的控件,如果是安全控件或者登录在js里实现,这种方法是获取不到的。

另外还有find_element_by_name、find_element_by_id的方法,但是我使用的时候出现找不到情况,怀疑是浏览器版本不匹配的原因。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解python之简单主机批量管理工具
Jan 27 Python
python根据unicode判断语言类型实例代码
Jan 17 Python
python快速建立超简单的web服务器的实现方法
Feb 17 Python
Python OpenCV利用笔记本摄像头实现人脸检测
Aug 20 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
django基于存储在前端的token用户认证解析
Aug 06 Python
python安装gdal的两种方法
Oct 29 Python
Python图像处理库PIL中图像格式转换的实现
Feb 26 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
next在python中返回迭代器的实例方法
Dec 15 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
Apr 03 Python
关于Python中*args和**kwargs的深入理解
Aug 07 Python
python使用scrapy发送post请求的坑
Sep 04 #Python
解决win64 Python下安装PIL出错问题(图解)
Sep 03 #Python
Python全局变量与局部变量区别及用法分析
Sep 03 #Python
Python wxPython库Core组件BoxSizer用法示例
Sep 03 #Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 #Python
Python wxPython库使用wx.ListBox创建列表框示例
Sep 03 #Python
Python wxPython库消息对话框MessageDialog用法示例
Sep 03 #Python
You might like
一拳超人中怪人协会钦定! S级别最强四人!
2020/03/02 日漫
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
PHP生成随机密码类分享
2014/06/25 PHP
jQuery简单实现banner图片切换
2014/01/02 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
python scipy卷积运算的实现方法
2019/09/16 Python
Python chardet库识别编码原理解析
2020/02/18 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
python多线程和多进程关系详解
2020/12/14 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
8和9的加减法教学反思
2014/05/01 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python