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实现动态添加类的属性或成员函数的解决方法
Jul 16 Python
Python常用的爬虫技巧总结
Mar 28 Python
Python 读写文件和file对象的方法(推荐)
Sep 12 Python
python 读取DICOM头文件的实例
May 07 Python
对Python中for复合语句的使用示例讲解
Nov 01 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
Jul 01 Python
结合OpenCV与TensorFlow进行人脸识别的实现
Oct 10 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
Mar 08 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
基于Python爬取fofa网页端数据过程解析
Jul 13 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
python list的index()和find()的实现
Nov 16 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
使用php来实现网络服务
2009/09/15 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
js的.innerHTML = ""IE9下显示有错误的解决方法
2013/09/16 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
python正则表达式修复网站文章字体不统一的解决方法
2013/02/21 Python
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
python实现批量监控网站
2016/09/09 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
分享vim python缩进等一些配置
2018/07/02 Python
Python并行分布式框架Celery详解
2018/10/15 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
String这个类型的class为何定义成final?
2012/11/13 面试题
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
班主任工作年限证明
2014/01/12 职场文书
美容院考勤制度
2014/01/30 职场文书
写景作文评语集锦
2014/12/25 职场文书
银行催款通知书
2015/04/17 职场文书
企业百日安全活动总结
2015/05/07 职场文书
Hive HQL支持2种查询语句风格
2022/06/25 数据库