Selenium-免登录的实现
场景:
经常会遇到登录需要验证码这样类似的情况
解决方案:
1.万能验证码
2.利用cookies来实现,问开发哪个cookies值是登录后需要的,把这个值带上即可
3.利用火狐浏览器的profile文件来实现(首先需要手工登录一次,且勾选记住信息)
4.手工输入(需要输入的地方sleep一会)
实例一:
利用cookies登录百度帐号
1\获取到cookies,取得登录的cookie
cookies = driver.get_cookies()
2\添加cookies,登录帐号
driver.add_cookie(cookie值)
获取到cookies值
#! /usr/bin/env python
#coding=utf-8 from selenium import webdriver
import time driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
time.sleep(3) driver.find_element("linkText","登录").click()
driver.find_element("name","userName").send_keys("")
driver.find_element("name","password").send_keys("xr199122")
time.sleep(20)
#手动输入验证码
driver.find_element("id","TANGRAM__PSP_10__submit").click()
time.sleep(5) #获取cookies值
cookies = driver.get_cookies()
print(cookies)
driver.quit() #删除cookies值
#driver.delete_all_cookies()
结果:
[
{'value': '828211617093E523BC5EDFE05AB3EA39:FG=1', 'expiry': 3651917680, 'path': '/', 'name': 'BAIDUID', 'httpOnly': False, 'secure': False, 'domain': '.baidu.com'},
{'value': '828211617093E523BC5EDFE05AB3EA39', 'expiry': 3651917680, 'path': '/', 'name': 'BIDUPSID', 'httpOnly': False, 'secure': False, 'domain': '.baidu.com'},
{'value': '1504433526', 'expiry': 3651917680, 'path': '/', 'name': 'PSTM', 'httpOnly': False, 'secure': False, 'domain': '.baidu.com'},
{'value': 'B490B5EBF6F3CD402E515D22BCDA1598', 'expiry': 1504520438, 'path': '/', 'name': 'BDORZ', 'httpOnly': False, 'secure': False, 'domain': '.baidu.com'},
{'value': 'eee17f0ccd81747c87f3b9e5f43712eb', 'expiry': 2556057600, 'path': '/', 'name': 'FP_UID', 'httpOnly': False, 'secure': False, 'domain': '.baidu.com'},
{'value': 'N2YTVzQX5aTWl4THpFWGhOMFp4VDk2T1MyQ0Z5bWRwRDMtcnhSN0lkQ1pZdE5aSVFBQUFBJCQAAAAAAAAAAAEAAAC~pSxhu-HF3LXE0NwyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJnVq1mZ1atZdk', 'expiry': 1763634068, 'path': '/', 'name': 'BDUSS', 'httpOnly': True, 'secure': False, 'domain': '.baidu.com'},
{'value': '1', 'expiry': None, 'path': '/', 'name': 'BD_HOME', 'httpOnly': False, 'secure': False, 'domain': 'www.baidu.com'},
{'value': '1439_12897_21089_22160', 'expiry': None, 'path': '/', 'name': 'H_PS_PSSID', 'httpOnly': False, 'secure': False, 'domain': '.baidu.com'},
{'value': '13314352', 'expiry': 1505298070, 'path': '/', 'name': 'BD_UPN', 'httpOnly': False, 'secure': False, 'domain': 'www.baidu.com'},
{'value': '1', 'expiry': 2450514070, 'path': '/', 'name': 'sugstore', 'httpOnly': False, 'secure': False, 'domain': '.www.baidu.com'}
]
剩下的如何取到登录的cookie,需要自己去尝试,如果是开发中,就去问开发就行,更方便
利用cookie值,登录百度帐号
#! /usr/bin/env python
#coding=utf-8
from selenium import webdriver
import time '''
利用cookies值登录百度
{'value': 'N2YTVzQX5aTWl4THpFWGhOMFp4VDk2T1MyQ0Z5bWRwRDMtcnhSN0lkQ1pZdE5aSVFBQUFBJCQAAAAAAAAAAAEAAAC~pSxhu-HF3LXE0NwyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJnVq1mZ1atZdk',
'expiry': 1763634068,
'path': '/',
'name': 'BDUSS',
'httpOnly': True,
'secure': False,
'domain': '.baidu.com'}
'''
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
time.sleep(3) #设置cookies值,基本格式
c1 = {'value': 'N2YTVzQX5aTWl4THpFWGhOMFp4VDk2T1MyQ0Z5bWRwRDMtcnhSN0lkQ1pZdE5aSVFBQUFBJCQAAAAAAAAAAAEAAAC~pSxhu-HF3LXE0NwyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJnVq1mZ1atZdk',
'expiry': 1763634068,
'path': '/',
'name': 'BDUSS',
'httpOnly': True,
'secure': False,
'domain': '.baidu.com'} #添加cookies
driver.add_cookie(c1)
time.sleep(3) #刷新之后观察是否已经登录成功
driver.refresh()
time.sleep(5) driver.quit()
结果:

实例二:利用火狐浏览器的profile文件来实现(首先需要手工登录一次,且勾选记住信息),登录百度帐号
#! /usr/bin/env python
#coding=utf-8
from selenium import webdriver
import time '''
自己的火狐浏览器的profile文件路径查看方法
火狐浏览器-帮助-故障排除信息-显示文件夹
必须手工登录一次,并记住密码之后再运行此代码才可以
''' profile_ff = "C:/Users/Administrator/AppData/Roaming/Mozilla/Firefox/Profiles/2e4p97lg.default" fp = webdriver.FirefoxProfile(profile_ff) driver = webdriver.Firefox(fp) driver.get("https://www.baidu.com/")
time.sleep(5)
driver.quit()
也可以实现免登录
Selenium-免登录的实现的更多相关文章
- Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型
1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...
- Selenium基于Python web自动化基础二 -- 免登录、等待及unittest单元测试框架
一.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...
- Selenium+Python ---- 免登录
1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...
- SourceTree 免登录跳过初始设置 - 转
转自:http://www.cnblogs.com/xiofee/p/sourcetree_pass_initialization_setup.html 在SourceTree的配置目录新建(或修改) ...
- 火车采集器 帝国CMS7.2免登录发布模块
帝国cms7.2增加了金刚模式,登录发布有难度.免登录发布模块配合火车采集器,完美解决你遇到的问题. 免登录直接获取栏目列表 通过文件内设置密码免登录发布数据 帝国cms7.2免登陆文章发布接口使用说 ...
- hadoop中master免登录slave
hadoop集群免登录配置 在主机master上执行如下: 1. $cd ~/.ssh(如果没有此目录,可以手动创建) 2. $ssh-keygen -t rsa ----------------- ...
- linux 多台 主机的免登录ssh的配置
1.首先检查 有没有安装ssh rpm-qa | grep ssh 如果没有安装 yum install ssh 2.在每一台机器上执行 ssh-keygen -t rsa 会在root/.ssh ...
- 【mac】ssh免登录密码
mac ssh免登录密码 在mac或者Linux上需要使用ssh登服务器,每次都需要输密码感觉很麻烦,搜了一下找到一个脚本,实践后发现可行. 1.创建脚本xx.sh $ vim xx.sh 输入: # ...
- 微博爬虫“免登录”技巧详解及 Java 实现(业余草的博客)
一.微博一定要登录才能抓取? 目前,对于微博的爬虫,大部分是基于模拟微博账号登录的方式实现的,这种方式如果真的运营起来,实际上是一件非常头疼痛苦的事,你可能每天都过得提心吊胆,生怕新浪爸爸把你的那些账 ...
- Retrofit2.0 ,OkHttp3完美同步持久Cookie实现免登录(二)
原文出自csdn: http://blog.csdn.net/sk719887916/article/details/51700659: 通过对Retrofit2.0的<Retrofit 2.0 ...
随机推荐
- 最小生成树——Prim(普利姆)算法
[0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解Prim算法的idea 并用 源代码加以实现: 0.2)最小生成树的基础知识,参见 http://blog. ...
- 同步与异步区别,Invoke与BeginInoke的区别
先说同步与异步的区别,总说同步异步的,其实一直不清楚什么是同步异步,今天找了一下: 同步:当一个消息发送后,等对方回应后继续发送下一条指令. 异步:当一个消息发送后,不等对方回应就发送下一条. 同步, ...
- C语言基础知识【判断】
C 判断1.判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的).C 语言把任何非零和非空的值假定为 true,把零或 null ...
- 【bzoj2226】[Spoj 5971] LCMSum 欧拉函数
题目描述 Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes the Leas ...
- 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群
from https://my.oschina.net/ososchina/blog/856678 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群 前言 最近在服务器上搭建了 ...
- jquery 访问后台方法 并且获取后方法返回的数据
说明: 1.开发环境 asp.net MVC4 c#语言. 后台方法位于控制器中ProController.cs中 后台方法如下: public string GetNumber() { string ...
- python的协程和_IO操作
协程Coroutine: 协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行. 注意,在一个子程序中中断,去执行其他子程序,不是函数调用,有点 ...
- mybatis相关
1 namespace dao中使用namespace+id一起来完成对mapper中sql statement的调用. 2 关于resultMap和parameterType parameterTy ...
- iOS 添加震动效果
开发过程中,有时候会碰到点击按钮或者某个动画会配合震动效果:下面介绍iOS开发过程中的震动添加: 导入:#import <AudioToolbox/AudioToolbox.h> 在需要出 ...
- Netty 高并发 (长文)
目录 Netty+Zookeeper 亿级 高并发实战 (长文) 写在前面 1. 高并发IM架构与部分实现 1.1. 高并发的学习和应用价值 1.1.1. 高并发IM实战的价值 1.1.2. 高并发I ...