一次破解滑动验证码记录

发表于:2021-7-29 10:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:测试安静    来源:51Testing软件测试网原创

  前言
  目前常见的验证码有很多种,比如数字验证码、滑动验证码以及滑动补全图像验证码等,关于验证码的操作属于我们在UI自动化很大的一个障碍,今天安静来介绍下如何通过python来实现我们滑动验证码。

  滑动验证码
  安静先来一张图,认识下今天将要破解的滑动验证码长什么样子。

  思路
  按照我们正常操作,首先通过按住滑动验证码,然后进行往右进行移动。
  这里的这个操作肯定很多人就会说,我们可以用selenium中的模拟鼠标操作,对的,安静今天就通过selenium中的鼠标操作来完成。
  当然前提肯定是先进行定位滑动框。这里还需要查看通过鼠标移动多少坐标点,因为手动操作时候,可以很清楚的看出来移动到哪里,但是代码层次不清楚,你想要移动多远。思路清楚了,那就直接上手进行做吧!

  实践
  通过F12进行查看。发现元素下面出现了伪元素(就是本身不存在的页面元素,HTML代码里并没有这样的元素,但在页面显示时,你却能看到这些本来不存在的元素发挥着作用),那么这里通过CSS进行定位。

  手动进行滑动,查看下我们要移动多少坐标点,当我们移动过程中会发现HTML有个属性style一直在变化,当移动到底后发现值不会变化了,就是我们的移动的坐标点。
  这里通过F12查看到了想要的偏移量和移动的元素内容,接下来进行代码方法实践。

  编写代码
  这里安静就直接上代码了,代码中有注释:
from selenium import webdriver
# 导入selenium中鼠标库
from selenium.webdriver import ActionChains
import time
driver = webdriver.Chrome()
driver.get("https://www.jq22.com/yanshi23642")
# 页面最大化
driver.maximize_window()
# 跳转到iframe中
driver.switch_to.frame('iframe')
# 在输入框中输入内容
driver.find_element_by_name('title').send_keys('123456')
# 通过CSS定位滑动点坐标
slider = driver.find_element_by_css_selector('div.slider-btn.layui-icon.layui-icon-next')
time.sleep(5)
action = ActionChains(driver)
# 长按鼠标
action.click_and_hold(slider)
# 偏移量(F12中查看)
action.move_by_offset(268, 0)
# 释放鼠标
action.release()
# 执行以上操作
action.perform()

  然后执行代码后,就会发现已经实现了。

  验证是否成功
  上面的代码和思路都很清楚了,那么如果我们想对他进行断言呢?这里会看到其实有提示“滑动验证通过”,我们可以通过显示等待的方法进行定位,如果出现字体正确,则说明滑动验证码已经通过。

  定位文本弹出框
  对于这种一而过的toast,当文本弹出来时候,可以通过F12中的sources点击暂停,然后再去查看元素内容。

  元素内容:

  直接在代码中进行定位元素然后获取其中的text属性即可。



版权声明:本文出自《51测试天地》第六十二期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号