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 23 Python
利用Fn.py库在Python中进行函数式编程
Apr 22 Python
使用PyV8在Python爬虫中执行js代码
Feb 16 Python
python 生成器生成杨辉三角的方法(必看)
Apr 10 Python
python实现八大排序算法(2)
Sep 14 Python
使用python判断你是青少年还是老年人
Nov 29 Python
wxpython绘制圆角窗体
Nov 18 Python
在PyCharm中实现添加快捷模块
Feb 12 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
浅析Python 责任链设计模式
Sep 11 Python
详解python中的异常捕获
Dec 15 Python
Python基础之数据类型知识汇总
May 18 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生成静态页面详解
2006/11/19 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
php设计模式之命令模式使用示例
2014/03/02 PHP
php调用shell的方法
2014/11/05 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
coffeescript使用的方式汇总
2015/08/05 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
python计算文本文件行数的方法
2015/07/06 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
九年级数学教学反思
2014/02/02 职场文书
党建工作汇报材料
2014/12/24 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
python基础之错误和异常处理
2021/10/24 Python
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL