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进行一些简单的自然语言处理的教程
Mar 31 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
python3.5 email实现发送邮件功能
May 22 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
Python列表的切片实例讲解
Aug 20 Python
windows 10 设定计划任务自动执行 python 脚本的方法
Sep 11 Python
opencv-python 提取sift特征并匹配的实例
Dec 09 Python
python实现百度OCR图片识别过程解析
Jan 17 Python
Python语法垃圾回收机制原理解析
Mar 25 Python
Python如何合并多个字典或映射
Jul 24 Python
python-jwt用户认证食用教学的实现方法
Jan 19 Python
关于Numpy之repeat、tile的用法总结
Jun 02 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
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
python实现复制大量文件功能
2019/08/31 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
Boda Skins皮衣官网:奢侈皮夹克,全球配送
2016/12/15 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
渔夫的故事教学反思
2014/02/14 职场文书
《童趣》教学反思
2014/02/19 职场文书
大连导游词
2015/02/12 职场文书
2015年安全月活动总结
2015/03/26 职场文书
2015年计划生育责任书
2015/05/08 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python