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实现通过微信搜索功能查看谁把你删除了
Jan 27 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
简单实现python进度条脚本
Dec 18 Python
python矩阵的转置和逆转实例
Dec 12 Python
基于python生成器封装的协程类
Mar 20 Python
在Python中os.fork()产生子进程的例子
Aug 08 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
Python爬虫HTPP请求方法有哪些
Jun 03 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
深入浅析pycharm中 Make available to all projects的含义
Sep 15 Python
Python装饰器的练习题
Nov 23 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编实现程动态图像的创建代码
2008/09/28 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
浅谈php中include文件变量作用域
2015/06/18 PHP
javascript高级学习笔记整理
2011/08/14 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
JS的函数调用栈stack size的计算方法
2018/06/24 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
python 生成不重复的随机数的代码
2011/05/15 Python
python多进程共享变量
2016/04/06 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
python脚本后台执行方式
2019/12/21 Python
Django框架models使用group by详解
2020/03/11 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
python实现在线翻译
2020/06/18 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
Python用SSH连接到网络设备
2021/02/18 Python
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
施工安全承诺书
2014/05/22 职场文书
明确岗位职责
2015/02/14 职场文书
大学生暑假实习总结
2015/07/13 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL