• 11
  • 12
分享

  前言

  在做web自动化的时候,登录验证码是一个大问题。在测试过程中,我们可以通过找研发进行去除,但是如果真的无法去除的时候,那应该怎么操作呢?

  安静今天通过几个实例来给大家介绍下,web自动化中怎么解决验证码的问题。

  通过cookies值登录

  我们都知道cookies是保持登录的一种状态,那是否可以通过cookies进行登录呢?

  selenium中也有获取cookies信息操作,通过将cookies保存在text中,在我们执行登录操作时,进行将cookies添加进去,这个时候就能通过cookies完成登录,从而跳过验证码内容。

  思路是清晰了,先进行通过selenium进行获取cookies值信息,这里安静使用的方法是,通过chrome配置信息,selenium可以在已经打开的浏览器中进行操作,获取cookies信息。

  或者在常规打开浏览器页面中强制等待30秒,手动输入验证码和验证码信息,然后在获取cookies信息。

  通过打开cmd打开新的浏览器窗口(这里一定要将chrom的安装路径配置到环境变量中)。

输入命令:chrome --remote-debugging-port=8210 --user-data-dir="F:\chrome_config"
# chrome:表示启动chrome浏览器
# remote-debugging-port:表示执行浏览器端口
# 8210为个人设置的端口
# --user-data-dir="F:\chrome_config":表示新建一个浏览器配置信息。

  在终端打开的浏览器中进行登录,登录过后,在通过selenium进行获取登录cookies值。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import json
options = Options()
# 启动的浏览器地址
options.debugger_address ='127.0.0.1:8210'
# 将浏览器配置信息进行添加
driver = webdriver.Chrome( chrome_options=options)
print('目前浏览器标题:'+driver.title)
x = json.dumps(driver.get_cookies())
with open('cookies.txt','w') as f:
    # 将cookies保存为json格式,保存下来,方便下次使用。
    f.write(json.dumps(driver.get_cookies()))

  这里时候我们已经将登录的cookies获取下来了,再次通过selenium进行访问登录页面时候,通读取txt文件信息,将cookies添加进去就可以完成登录了。

from selenium import webdriver
import json
driver = webdriver.Chrome()
driver.get('http://127.0.0.1/pro/user-login-L3Byby8=.html')
with open('cookies.txt','r') as f:
    # 使用json读取cookies,进行添加cookies
    cookies_list = json.load(f)
    for cookie in cookies_list:
        driver.add_cookie(cookie) 
# 刷新页面   
driver.refresh()

  通过执行发现,我们已经完成了登录操作,从而跳过了验证码。

2-1.gif

  通OCR识别验证码

  这里安静简单的介绍下通过OCR进行识别输入类型的验证码,从而完成登录操作。

  在平台中找到关于OCR识别的开源接口,然后通过selenium进行获取并保存图片信息,在通过OCR的开源接口信息进行识别图片内容,最后将识别的结果输入到验证码输入框中。

import requests
from selenium import webdriver
import base64
import time
driver = webdriver.Chrome()
# 打开登录页面
driver.get('http://v3pro.houjiemeishi.com/PC/pages/login/login.html')
# 获取验证码图片地址
img_url = driver.find_element_by_class_name('codeImg').get_attribute('src')
# 通过请求图片地址获取图片的base64编码
img_r = requests.get(url=img_url)
base64_data = base64.b64encode(img_r.content).decode()
bodys = {
    "v_pic": base64_data,
    "pri_id": 'ne',
    "number": 4
}
# 这个参数可以通过尖叫数据进行自行申请
headers = {
    'appcode': "xxxxxxx",
    "appKey": "xxxxxx",
    "appSecret": "xxxxxxx"
}
# 请求验证码接口信息,返回验证码数字
url = 'http://apigateway.jianjiaoshuju.com/api/v_1/yzmCustomized.html'
r = requests.post(url, headers=headers, data=bodys)
tt = r.json()['v_code']
time.sleep(1)
# 验证码输入框输入验证码信息
driver.find_element_by_class_name('ipt2').send_keys(tt)

  通过执行发现,我们已经在验证码输入框中输入了正确的验证码信息。

2-2.gif

  总结

  其实跳过验证码的方法还有很多种,安静只是介绍了最简单最常用的两种方法进行跳过,当然最最最简单的肯定是让研发自动化测试阶段进行去除,或者用一个万能验证码进行输入。



作者:测试安静   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   背景  对于很多中小型银行来说,数据中台是基于大数据平台基础支撑,支持规则模型计算,大批量计算查询分析,形成统一服务层,为各类数据服务应用赋能。  很多中小型现在面对数据应用的痛点在主要在于:  数据应用主要还是在 T 加1的服务为主,缺乏实时数据服务;  数据服务主要还是集中在报表需求,缺乏数据深入分析能力;  缺乏对历史查询和分析支持不足。  为了解决这些痛点,建设数据中台,增加统一数据实时服务(主要为计算和查询),提升大批量数据处理,数据建模深入分析,亿级数据关联计算时间秒级,增加非结构化数据查询存储能力。  典型应用需求场景  1、风控评级,比如个人对公账户评级,对可疑账户进行倒查...
            1 1 1107
            分享
          •   iPhone 15 已经到来。在今天于库比蒂诺举行的"Wonderlust"发布会上,苹果公司的第 17 代手机如期亮相。这款设备带来了许多熟悉的功能,包括现在全线推出的"灵动岛"打孔。  "灵动岛"提供了许多新功能,包括航空公司的航班信息,今年的 iPhone 外观与之前的 iPhone 14 基本相同,iPhone 15 继续使用 6.1 英寸显示屏,Plus 机型为 6.7 英寸。  除了灵动岛的变化外,iPhone 15 最大的明显升级是改进了相机系统。主摄像头传感器从上一代 iPhone 14 的 1200 万像素提升到...
            0 0 807
            分享
          •   对于经常接触代码的人来说,git以及github并不陌生。但是对于刚接触git环境的人,尤其是对于测试人来说,使用起来还是有一定难度的。  我想大部人对于这块的疑问有可能存在下面的几点:  1.没有全局观,不理解每个工具实现的功能,也就是不理解原理,只知道直接照着网上的教程走,以至于出现问题,不知道如何解决。  2.有的资料是直接命令,有的是通过工具,也就是实现方式不唯一,不确定自己到底想要以什么方式实现。  3.不知道注意的点。缺少技巧,比如某个命令执行了,但是就是不生效,原因有可能是一类问题。  针对上面的问题,逐一简单介绍一下。  每个工具职责  pycharm  pycharm是p...
            15 15 1932
            分享
          • 前言:本篇讲堂是紧接【安全测试工具-进阶篇[密码重置和安全密码]】的内容。例牌,先说下安全测试工具的更新情况【工具地址:https://gitee.com/samllpig/SafeTool-51testing】服务平台,HTTP服务增加XXE外部实体引用集成平台,增加嗅探器插件POC平台,增加经典XXE和盲注XXE的POC脚本正文:漏洞讲解:所属模块: (A3) Sensitive Data Exposure [敏感信息泄露]4.1 菜单项: Insecure Login [登录信息泄露],本章共2个小节4.1.1 第一节主题:为什么需要对敏感数据进行加密?内容:在本课程...
            0 0 70
            分享
          • 购物车对于电商系统,还是比较重要的一个功能模块,看上去比较简单,但是关于这个功能的测试分析还是不是那么轻松的,因为它真的不仅仅需要功能测试,还需要其他技术的支持才能做好。功能上:购物车是否需要登陆才能进入;账号退出后,购物车添加的内容是否还在;购物车页面是否能够显示添加的商品的详细信息(商品名称、链接、数量、单价、总价);一条商品的单价、数量、总价的计算是否正确;多条商品是否能够以列表显示;多条商品同时显示,能否在相同的位置显示相同的数据;购物车能够返回商品首页继续浏览;能够移除购物车中的商品;购物车能够调整商品的数量;限购商品数量调整时能不能超过限购数量;没有限购要求的商品,添加数量能不能超...
            0 0 1933
            分享
      • 51testing软件测试圈微信