测试那些事儿—selenium自动化实战之登录验证码处理
登陆时经常出现验证码自动化测试如何处理呢?
一般有如下几种处理思路:
1.通过接口请求,拿到对应验证码信息
2.让开发配合把验证码改成万能验证码
3.注入cookies
如何通过注入cookies的方式实现呢?
首先通过自动化形式打开登陆页面,加一定的延时时间,手动登陆后,打印出来cookies信息。
driver = webdriver.Chrome()
driver.get("https://fly.layui.com/user/login/")
time.sleep(3)
cookies = driver.get_cookies()
print (cookies)
拿到cookies信息后,我们此时就可以去写登录的代码去免登陆了:
driver = webdriver.Chrome()
driver.get("https://fly.layui.com/user/login/")
cookies_01 = {'domain': 'fly.layui.com', 'expiry': 15522.125036, 'httpOnly': True, 'name': 'fly-layui', 'path': '/', 'secure': False, 'value': 's%3AwqpG2eBNqbfd6lmmWLc-DTiNP_.EAy1gm0u%2BCI8SMAxkFkaRWxUoGByz0g4RDXySLsjOfo'}
cookies_02 = {'domain': '.layui.com', 'expiry': 1567495108, 'httpOnly': False, 'name': 'Hm_lvt_d214947968792b839fd669a4decaaffc', 'path': '/', 'secure': False, 'value': '1551959096'}
cookies_03 = {'domain': '.layui.com', 'httpOnly': False, 'name': 'Hm_lpvt_d214947968792b839fd669a4decaaffc', 'path': '/', 'secure': False, 'value': '1558659109'}
driver.add_cookie(cookies_01)
driver.add_cookie(cookies_02)
driver.add_cookie(cookies_03)
driver.refresh()
刷新后就可以自动登录了。
但是这存在一个问题就是,如果cookies信息很多,一条条手动去添加过去麻烦,所以我们可以先把他存到一个文件中:
cookiesFile = json.dumps(cookies)
with open('cookiesFile.json', 'w') as filemy:
filemy.write(cookiesFile)
这样你之前的cookies信息就会存在cookies文件中,下次要去使用就直接读文件就好了,具体实现如下:
with open('cookiesFile.json','r') as filemy:
cookiesInfo=json.loads(filemy.read())
for cc in range(0,len(cookiesInfo)):
driver.add_cookie(cookiesInfo[cc])
driver.refresh()
此时通过refresh后,我们就直接登入了系统,是不是很方便呢?
测试那些事儿—selenium自动化实战之登录验证码处理的更多相关文章
- python+selenium自动化禅道登录测试
本文以禅道登录测试为例,思路主要分openBrowser.openUrl.findElement.sendVals.checkResult.ReadUserdate六部分 openBrowser de ...
- 测试那些事儿—selenium IDE 自动化测试
浏览器 Firefox Setup 35.0.1 安装完成后设置菜单栏 关闭浏览器自动更新 插件配置(必备武器) FireBug Firebug是firefox下的一个扩展,能够调试所有网站语言,如H ...
- selenium自动化 | 通过获取cookies登录
>>>登录百度<<<#获取登录成功后的cookies def get_cookies(): driver.get(bd_url) driver.implicitly ...
- Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题
日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚 ...
- python+selenium自动化软件测试(第10章):测试驱动TDD
测试驱动开发模式,要求开发在写业务代码的时候,先写出测试代码,同时单元测试例子决定了如何来写产品的代码,并且不断的成功的执行编写的所有的单元测试例子,不断的完善单元测试例子进而完善产品代码, 这样随着 ...
- 2-2 selenium IDE自动化实战
Selenium IDE 自动化实战 任务1: 自动在百度搜索"我要自学网" 然后在搜索结果页面点击进入自学网主页 任务2 实现自学网自动登录个人账号 Test2017 12345 ...
- Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest
前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...
- Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)
Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get ...
- Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)
日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资 ...
随机推荐
- vim自动补全头注释与说明
做个笔记吧. .vimrc autocmd BufNewFile *.c,*.cpp,*.sh,*.py,*.java exec ":call SetTitle()" " ...
- 剑指offer(59)按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题目分析 这道题还是需要画图分析,不然不好找 ...
- 批量操作RunTime之获取的Dic换成Model
方法一: // // AlinkDeviceInfo.m //// // Created by Vivien on 2018/10/12. // Copyright © 2018年 . All rig ...
- vector和list
vector vector与数组类似,拥有一段连续的内存空间,并且起始地址不变.便于随机访问,时间复杂度为O(1),但因为内存空间是连续的,所以在进入插入和删除操作时,会造成内存块的拷贝,时间复杂度为 ...
- version control的简单认知
version control 版本控制是一种记录文件或文件集随时间变化的系统,以便您以后可以调用特定版本.对于本书中的示例,您将使用软件源代码作为受版本控制的文件,但实际上您可以使用计算机上的几乎任 ...
- Linux PWM framework简介和API描述【转】
本文转载自:https://blog.csdn.net/mike8825/article/details/51656400 1. 前言 PWM是Pulse Width Modulation(脉冲宽度调 ...
- (转) Ensemble Methods for Deep Learning Neural Networks to Reduce Variance and Improve Performance
Ensemble Methods for Deep Learning Neural Networks to Reduce Variance and Improve Performance 2018-1 ...
- easyUI使用datagrid-detailview.js实现二级列表嵌套
本文为博主原创,转载请注明: 在easyUI中使用datagrid-detailview.js可快速实现二级折叠列表,示例如下: 注意事项: 原本在谷歌浏览器进行示例测试的,url请求对应的json文 ...
- obs studio 使用
专业,开源,无广告,免费,录屏/推流神器--obs studio 稍微简单的也有captura, 原理:调用本地API获取音频流,图像流(全屏幕,单个windows窗口的图像输出)->开源音视频 ...
- doctrine/annotation 的简单使用
<?php // 错误处理机制 register_shutdown_function('myShutDown'); set_error_handler('myError'); set_excep ...