Cookie跳转登录验证码
对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,
对于系统来说使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性。但对于测试人员来说,不管是进行性能测试还是自动化测试
都是一个棘手的问题。下面详细的介绍一下通过Cookie跳转过验证码这种方式。
参考了虫师的:自动化测试 -- 通过Cookie跳过登录验证码
准备工具:
------------------
fiddler
Python+selenium
------------------
以百度登录为例。
打开百度的登录页面,验证码是汉字的,通过程序识别起来有点难度,也会比较麻烦。
接下来开始动手。
1、开启Fiddler 工具。
2、通过浏览器登录正常登录百度账号。
3、通过Fiddler获取登录请求的Cookie。找到Host为“passport.baidu.com”的URL,在右侧窗口查看该请求的Cookie。
然后,找到重要的两个参数“BAIDUID”和“BDUSS”。
4、编写Selenium自动化测试脚本,跳过登录。
from selenium import webdriver driver = webdriver.Chrome() driver.get("https://www.baidu.com") # 添加Cookie driver.add_cookie({'name':'BAIDUID','value':'AAAAAAAAAAAAAA:FG=1'}) driver.add_cookie({'name':'BDUSS','value':'AAAAAAAAAAAAAAAAAAAAAAAAAA'}) # 刷新页面 driver.refresh() # 获取登录用户名并打印 username = driver.find_element_by_class_name("user-name").text print(username) #关闭浏览器 driver.quit()
首先,访问百度首页,处于未登录状态。
然后,通过Selenium所提供add_cookie()方法添加Cookie信息。
最后,刷新页面,现在已经是登录状态了,获取登录之后的用户名并打印
注意:
其实说了这么多,最简单的方式是和开发人员沟通,在测试环境屏蔽验证码(会降低系统安全性),最好的方式是在开发过程中设置一个万能的验证码