• 自动化测试难题,验证码如何解决


    一.去掉验证码

    这是最简单的解决方案, 对于开发人员来说, 只是将验证码的相关代码注释掉就行, 但这种方案只能在测试环境下进行, 在线上环境下会对系统产生一定的风险.

    二.设置万能验证码

    去掉验证码会产生安全问题, 线上系统的安全性很重要不能忽略, 这时我们可以采用不取消验证码, 而是在程序代码中留一个"后门" 也就是预留一个万能的验证码, 只要输入这个固定的万能验证码, 则认为验证通过.

    三.验证码识别技术

    步骤1: 安装识别验证码需要的python库
    pip install pillow
    pip install pytesseract
    步骤2: 通过代码识别图片尺寸并获取识别后的验证码
    from io import BytesIO
    from PIL import Image
    import pytesseract
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    driver.maximize_window()
    driver.get('http://localhost/index.php/Home/user/login.html')
    # 保存页面
    scree = driver.get_screenshot_as_png()
    # 定位图片
    img = driver.find_element(By.ID, 'verify_code_img')
    # 输出图片 及尺寸大小
    print(img.location, img.size)
    location = img.location #图片坐标轴
    size = img.size # 图片大小
    left = location['x'] # x轴
    top = location['y'] # y轴
    right = size['width'] + left # 宽度
    bottom = size['height'] + top # 高度
    verify_img = Image.open(BytesIO(scree)).crop((left,top,right,bottom))
    verify_img.save('verify_img.png')
    image1 = Image.open('verify_img.png')
    text = pytesseract.image_to_string(image1)
    print(text)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    识别技术成功率一般低于30%, 仍然需要不断的进行优化和练习才能够提升.

    四.记录cookie

    以BaiDu为案例:

    步骤1: 通过浏览器登录正常的百度账号, 如下图:

    步骤2: 使用抓包工具或者打开浏览器的开发者工具栏,找到Application中的Cookies选项:
    在这里插入图片描述
    找到最最重要的两个数据: “BAIDUID” “BDUSS”

    步骤3:

    编写自动化测试脚本, 跳过登录
    from time import sleep
    from selenium import webdriver
     
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get("https://www.baidu.com")
     
    # 添加Cookie
    driver.add_cookie({'name':'BAIDUID','value':'1699E29FCB27B74AE688991269EE7212:FG=1'})
    driver.add_cookie({'name':'BDUSS','value':'FZTndRRnBlSjNMQUZsNzNPSzdCZnp0MU83TX5lLU9XaDJrdHloTS1odWpJcDlpRVFBQUFBJCQAAAAAAAAAAAEAAADv1Oew0rvT79K7yMvJ-s7eu9oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKOVd2KjlXdiOH'})
     
    # 刷新页面
    driver.refresh()
    sleep(5)
    #关闭浏览器
    driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    刷新浏览器,显示已登录效果:
    在这里插入图片描述
    使用cookie进行登录绕过的最大难点是如何来获取用户的cookie相关数据, 最重要的是 name和key这两个参数.

    我们可以通过selenium中的 driver.get_cookies()方法来获取, 数据为 [{“key1”:“value1”},{“key2”:“value2”}…] 列表嵌套字典格式,先对列表数据进行遍历,再来进一步确认需要使用的数据.

    最后:

    最简单安全行之有效的方式就是设置万能验证码, 当然愿意在技术方向更进一步的同学, 也可以通过验证码识别来实现.

    最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!

    在这里插入图片描述

    这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……

    如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。

    敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。

    自学推荐B站视频:

    零基础转行软件测试:38天自学完软件测试,拿到了字节的测试岗offer,堪称B站最好的视频!

    自动化测试进阶:已上岸华为,涨薪20K,2022最适合自学的python自动化测试教程,自己花16800买的,无偿分享

    在这里插入图片描述

  • 相关阅读:
    Scala的简单学习二
    Spring Boot 开发 -- swagger3.0 集成
    [附源码]计算机毕业设计智慧园区运营管理系统Springboot程序
    Linux学习第21天:Linux内核定时器驱动开发: 流淌的时间长河
    浅谈无脚本自动化测试
    算法通过村第十二关-字符串|白银笔记|经典面试题
    C语言 | Leetcode C语言接雨水II
    ROS 摄像头标定-camera_calibration
    旧物回收小程序开发,开启绿色生活新篇章
    EditorConfig + Prettier + ESLint 代码规范化
  • 原文地址:https://blog.csdn.net/weixin_57805858/article/details/126319176