• Selenium自动化测试 —— 通过cookie绕过验证码的操作!


    验证码的处理

      对于web应用,很多地方比如登录、发帖都需要输入验证码,类型也多种多样;登录/核心操作过程中,系统会产生随机的验证码图片,进行验证才能进行后续操作

    解决验证码的方法如下:

    1、开发做个万能验证码(推荐)
    2、测试环境关闭验证码功能(推荐)(开发配置)
    3、图片识别技术(不稳定)
    4、调用开发生成验证码接口(和开发配合)
    5、第三方验证码平台(打码兔)
    6、cookie绕过验证码(推荐)

    cookie处理

    假如我们需要验证浏览器中是否存在cookie,因为基于真实的cookie是无法通过白盒和集成测试完成的,webdriver可以读取、添加和删除cookie信息

    webdriver操作cookie的方法如下:

    get_cookies() 获取所有cookie信息
    get_cookie(name) 返回特定name有cookie信息
    add_cookie(cookie_dict) 添加cookie,必须有name和value值
    delete_cookie(name) 删除特定部分的cookie信息
    delete_all_cookies() 删除所有cookie信息

    备注:add_cookie()里面放置字典参数,cookie字典一般需要包含name、value、domain、path等字段,如果遇到cookie有Expirse字段,要去掉

    举例实战:利用cookie完成网站的免密码应用

    第一步的代码思路:只是为了把登录后的cookie信息写入到excel中为后面的免密码登录做准备工作

    1、打开网站的登录页面
    2、等待60s,这个时间手动去输入用户名、密码、验证码登录
    3、获取登录之后cookie
    4、把登录之后cookie写入到excel中

    代码如下:

    前置条件:导入xlwt库

    1. import os
    2. import time
    3. import xlwt
    4. from selenium import webdriver
    5. current_path = os.path.dirname(os.path.abspath(__file__)) # 当前路径
    6. driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe') # driver路径
    7. driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等
    8. driver.get('http://47.107.187.54/zentao/www/index.php?m=user&f=login') # 打开禅道地址
    9. workbook = xlwt.Workbook(encoding='utf-8') # 设置workbook对象
    10. sheet = workbook.add_sheet('Sheet01') # 新增sheet页名称
    11. sheet.write(0,0,'number') # 通过行列坐标写入值
    12. sheet.write(0,1,'name')
    13. sheet.write(0,2,'value')
    14. sheet.write(0,3,'path')
    15. sheet.write(0,4,'domain')
    16. time.sleep(30) # 手动输入 用户名、密码、验证码时间
    17. cookies = driver.get_cookies() # 获取登录后的cookie信息
    18. for i in range(1,len(cookies)+1): # 遍历cookie的值,并通过行列坐标写入值
    19. sheet.write(i,0,i)
    20. sheet.write(i, 1,cookies[i-1]['name'])
    21. sheet.write(i, 2,cookies[i-1]['value'])
    22. sheet.write(i, 3,cookies[i-1]['path'])
    23. sheet.write(i, 4,cookies[i-1]['domain'])
    24. workbook.save('test.xls') # 保存并设置excel的名称

    第二步的代码思路:

    1、打开网站的登录页面
    2、用add_cookie()方式把excel中的cookie信息添加到cookie中
    3、刷新网站,即可完成自动登录操作

    代码如下:

    前置条件:导入xlrd库

    1. import os
    2. import time
    3. import xlrd
    4. from selenium import webdriver
    5. current_path = os.path.dirname(os.path.abspath(__file__)) # 当前路径
    6. driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe') # driver路径
    7. driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等
    8. driver.get('http://47.107.187.54/zentao/www/index.php?m=user&f=login') # 打开禅道地址
    9. workbook = xlrd.open_workbook('test.xls') # 打开指定的excel文件
    10. sheet = workbook.sheet_by_name('Sheet01') # 找到指定的sheet页
    11. # 遍历sheet页中有效的行,在把excel中cookie信息添加到cookie中,实现免登录
    12. for i in range(1,sheet.nrows):
    13. driver.add_cookie( {'name':sheet.cell_value(i,1),'value':sheet.cell_value(i,2),
    14. 'path':sheet.cell_value(i,3),'domain':sheet.cell_value(i,4)} )
    15. time.sleep(3)
    16. driver.refresh() # 刷新

    今天的分享就到此结束了,大家还有什么不懂的可以评论区下留言哈,如果我的文章对你有所帮助的话,可以点赞三联支持一下

  • 相关阅读:
    AWS创建实例 启用/禁用 自动分配公有 IP
    奇迹mu 架设过程中可能会出现的问题及解决办法
    code:blocks安装(最新详解版)
    初探富文本之React实时预览
    usb 协议和驱动网址
    C语言指针操作(一)指针变量
    设计模式探索:从理论到实践的编码示例 (软件设计师笔记)
    ES6基础语法----解构
    Linux系统线程创建的过程
    【EI复现】基于主从博弈的新型城镇配电系统产消者竞价策略【IEEE33节点】(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/qq_43371695/article/details/133272163