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脚本设置超时机制系统时间的方法
Feb 21 Python
python记录程序运行时间的三种方法
Jul 14 Python
python使用sqlite3时游标使用方法
Mar 13 Python
python匹配两个短语之间的字符实例
Dec 25 Python
python redis 删除key脚本的实例
Feb 19 Python
Apache,wsgi,django 程序部署配置方法详解
Jul 01 Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 Python
python实现网站微信登录的示例代码
Sep 18 Python
使用python绘制二维图形示例
Nov 22 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
python使用BeautifulSoup 解析HTML
Apr 24 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 foreach、while性能比较
2009/10/15 PHP
php下统计用户在线时间的一种尝试
2010/08/26 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
Javascript Math对象
2009/08/13 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
jQuery模拟窗口抖动效果
2017/03/15 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
Python isinstance函数介绍
2015/04/14 Python
python实现获取Ip归属地等信息
2016/08/27 Python
python实现按长宽比缩放图片
2018/06/07 Python
Python初学者常见错误详解
2019/07/02 Python
python实现桌面托盘气泡提示
2019/07/29 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
英国最大的独立家具零售商:Furniture Village
2016/09/06 全球购物
工商管理专业应届生求职信
2013/11/04 职场文书
物业招聘计划书
2014/01/10 职场文书
爽歪歪广告词
2014/03/20 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
医院营销工作计划
2015/01/16 职场文书
写给老师的保证书
2015/05/09 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
python 管理系统实现mysql交互的示例代码
2021/12/06 Python