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 相关文章推荐
详解Django框架中的视图级缓存
Jul 23 Python
Python内置函数——__import__ 的使用方法
Nov 24 Python
matlab中实现矩阵删除一行或一列的方法
Apr 04 Python
python随机取list中的元素方法
Apr 08 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
Python3实现的简单验证码识别功能示例
May 02 Python
python实现多进程代码示例
Oct 31 Python
python简单实现AES加密和解密
Mar 28 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
使用pyplot.matshow()函数添加绘图标题
Jun 16 Python
python如何停止递归
Sep 09 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 && 逻辑与运算符使用说明
2010/03/04 PHP
分享自定义的几个PHP功能函数
2015/04/15 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
js去除空格的12种实用方法
2013/11/08 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
详解如何在vue项目中引入elementUI组件
2018/02/11 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
python 自动批量打开网页的示例
2019/02/21 Python
python3实现表白神器
2019/04/09 Python
python实现与redis交互操作详解
2020/04/21 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
个人工作能力自我评价
2015/03/05 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
宇宙与人观后感
2015/06/05 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python