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到Text纯文本的方法
Jan 15 Python
python中的格式化输出用法总结
Jul 28 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
Dec 14 Python
浅谈python日志的配置文件路径问题
Apr 28 Python
python实现随机漫步算法
Aug 27 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
python for和else语句趣谈
Jul 02 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
Python实现自动签到脚本的示例代码
Aug 19 Python
python自动化发送邮件实例讲解
Jan 04 Python
Python实现小黑屋游戏的完整实例
Jan 06 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的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
php显示时间常用方法小结
2015/06/05 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
zen cart实现订单中增加paypal中预留电话的方法
2016/07/12 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
JQuery 写的个性导航菜单
2009/12/24 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
JavaScript 代码压缩工具小结
2012/02/27 Javascript
js实现简单计算器
2015/11/22 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
python33 urllib2使用方法细节讲解
2013/12/03 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
请解释流与文件有什么不同
2016/07/29 面试题
出国留学自荐信
2013/10/25 职场文书
个人安全承诺书
2014/05/22 职场文书
协会周年庆活动方案
2014/08/26 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
避暑山庄导游词
2015/02/04 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
目标责任书格式范文
2015/05/11 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
八年级作文之感恩
2019/11/22 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP
Java Spring Lifecycle的使用
2022/05/06 Java/Android