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处理HTML转义字符的5种方式
Dec 27 Python
django将图片上传数据库后在前端显式的方法
May 25 Python
Django框架实现逆向解析url的方法
Jul 04 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
Django查询优化及ajax编码格式原理解析
Mar 25 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
Django websocket原理及功能实现代码
Nov 14 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Nov 18 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 Python
Python 中 Shutil 模块详情
Nov 11 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学习笔记之 函数声明
2011/06/09 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
jQuery maxlength文本字数限制插件
2010/04/16 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
python使用response.read()接收json数据的实例
2018/12/19 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
python+OpenCV实现图像拼接
2020/03/05 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
python爬取音频下载的示例代码
2020/10/19 Python
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
Linux操作面试题
2015/02/11 面试题
数控技校生自我鉴定
2014/04/19 职场文书
村容村貌整治方案
2014/05/21 职场文书
高一军训的心得体会
2014/09/01 职场文书
2014副镇长民主生活会个人对照检查材料思想汇报
2014/09/30 职场文书
实习指导老师意见
2015/06/04 职场文书
文艺节目主持词
2015/07/06 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
gateway网关接口请求的校验方式
2021/07/15 Java/Android