前言
目前常见的验证码有很多种,比如数字验证码、滑动验证码以及滑动补全图像验证码等,关于验证码的操作属于我们在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内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。