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 ...
随机推荐
- 程序猿学英语—In August the English learning summary
时间真快,总结的7月份英语学习总结刚刚结束,转眼间又该对8月份的英语学习进行小节了. 进入8月初.下发了一个文档,用一个星期的时间学音标.纠音. 在王美的带领下我组也发起了纠音运动. 刚开 始纠音的时 ...
- linux关机前同步数据(sync)
sync,将内存中未更新的数据写入硬盘中.
- jquery获取页面iframe内容
//取得整个HTML格式 var f = $(window.frames["ReportIFrame"].document).contents().html(); 或者 $(&qu ...
- spring;maven;github;ssm;分层;timestamp;mvn;
[说明]本来还想今天可以基本搭建一个合适的ssm环境呢,结果发现,,太特么复杂了,网上的例子有好多,看了好多,下面的评论或多或少都有说自己运行产生问题的,搞的我也不敢好好下载运行 [说明]没办法,将目 ...
- bash编程基础
bash变量 变量命名: 1.不能使用程序中的关键字(保留字) 2.只能使用数字.字母和下划线,且不能以数字开头 3.要见名知义 变量类型: 数值型:精确数值(整数),近似数值(浮点型) 字符型:ch ...
- Centos设置开机启动Apache和Mysql
先用chkconfig --list查询apache和mysql服务是否存在,不存在则需要手动添加 [root@centos64 vsftpd]# chkconfig --list 测试存在,只需要开 ...
- IaaS,PaaS,Saas 云服务的介绍
云服务只是一个统称,可以分成三大类. IaaS:基础设施服务,Infrastructure-as-a-service PaaS:平台服务,Platform-as-a-service SaaS:软件服务 ...
- 从HttpServletRequest获取POST数据的代码
我们经常需要从HttpServletRequest对象获取POST请求的数据,下面给出简练的代码共大家参考 StringBuffer jb = new StringBuffer(); String l ...
- hadoop 根据secondary namenode恢复namenode
refer to http://www.cnblogs.com/Richardzhu/p/3435989.html http://blog.csdn.net/wuzhilon88/article/de ...
- monokai-background
foreground-color:f8f8f2 background-color:272822