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登录并获取CSDN博客所有文章列表代码实例
Dec 28 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
python机器学习之贝叶斯分类
Mar 26 Python
Numpy数组的保存与读取方法
Apr 04 Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
Python多线程模块Threading用法示例小结
Nov 09 Python
Python笔记之代理模式
Nov 20 Python
Python: 传递列表副本方式
Dec 19 Python
Python测试框架:pytest学习笔记
Oct 20 Python
python opencv检测直线 cv2.HoughLinesP的实现
Jun 18 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
cmd下运行php脚本
2008/11/25 PHP
php连接mssql数据库的几种方法
2013/02/21 PHP
php使用curl访问https示例分享
2014/01/17 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
2015/03/17 Javascript
jQuery.each使用详解
2015/07/07 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
[10:39]DOTA2上海特级锦标赛音乐会纪录片
2016/03/21 DOTA
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
python 判断网络连通的实现方法
2018/04/22 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
基于Python测试程序是否有错误
2020/05/16 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
个人租房协议书(范本)
2014/10/14 职场文书
火烧圆明园观后感
2015/06/03 职场文书
2019 入党申请书范文
2019/07/10 职场文书
python源码剖析之PyObject详解
2021/05/18 Python