web自动化你不得不知道的12306滑块验证码完美破解,转发收藏

Web自动化的意义

定义:自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。

目的:验收测试的过程可以将重复性的测试工作自动化,从而提高测试的效率和质量。

内容:Web自动化主要是将回归+验证测试的用例进行自动化,也就是自动化回归验证

备注:自动化其实这是个耗费时间的工作。所以测试人员在决定做自动化的时候往往需要首先分析确认哪些模块适合做自动化,这样才能更好的节约资源,合理利用有限资源。否则,自动化只会带来更大的工作量,而对测试毫无帮助


验证码破解


验证码破解一直都是Web自动化的技术难点。然而,它也是更好实现Web自动化的关键技术!


滑块验证码破解技术架构


12306滑块验证码破解

首先,我们使用Web自动化进入到12306的登录页面。这一块基础薄弱的同学可以系统自我提升一下!

# -*- coding: utf-8 -*-
"""
@Time : 2022/4/5 20:24
@Auth : Mr. William 1052949192
@Company :特斯汀学院 @testingedu.com.cn
@Function :12306滑块验证码
"""
from selenium import webdriver


# 打开浏览器(配置webdriver)
driver = webdriver.Chrome(options=option)

# 隐式等待
driver.implicitly_wait(10)
driver.maximize_window()

# 打开网站
driver.get('https://kyfw.12306.cn/otn/resources/login.html')

# 输入用户名(快速导入alt+enter)
driver.find_element(By.XPATH,'//*[@id="J-userName"]').send_keys('i_wanting@yeah.net')
# 输入密码
driver.find_element(By.XPATH,'//*[@id="J-password"]').send_keys('xiaobao168')
driver.find_element(By.XPATH,'//*[@id="J-login"]').click()


破解滑块验证码步骤解析

目前,12306的滑块验证码破解属于较为简单一类。其破解原理如下:

找到滑块 --> 拖动(鼠标移动过去,然后按住鼠标,拖动)--> 拖动距离(因并不是精确距离,所以直接查看元素大小即可) --> 放开鼠标

# 找滑块
ele = driver.find_element(By.XPATH,'//*[@id="nc_1_n1z"]')

# 使用action操作鼠标
action = ActionChains(driver)
# 鼠标移动到元素
action.move_to_element(ele)
# 按住鼠标
action.click_and_hold(ele)
# 拖动380个水平像素
action.move_by_offset(380,0)
# 放开鼠标
action.release()
# 一定要让上面的操作执行
action.perform()

可能报错处理方案

Exception:no such element(没有在页面上找到这个元素)

reason1:元素延迟加载了

solution

添加隐式等待

# 隐式等待
driver.implicitly_wait(5)

每隔0.5s去找一次元素,如果找到就继续执行,如果没找到就继续去找

一直到你配置的时间,还没找到,就报no such element

大大加强了自动化的稳定性,默认都是需要配的


reason2:定位器写错(拼写错误、id是变化的等)

solution

怎么调试定位方式?(在自动化打开的浏览器里面调试哦!)

在elements里面,调

在console界面,使用$x('xpath')调试


报错:error:QtPx7(哎呀,出错啦!)

reason:网站识别了自动化(识别原理:自动化有在打开的浏览器使用标识)

solution

去掉自动化标识

# 去掉自动化标识
option = Options()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_argument('--disable-blink-features=AutomationControlled')
# 打开浏览器(配置webdriver)
driver = webdriver.Chrome(options=option)


解决所有问题之后,12306滑块验证码完美破解啦!!!

关注我们,还有更多类型自动化破解(图文验证码、京东、知乎、淘宝等,都可以哦!)百度搜索“特斯汀软件测试腾讯课堂”或关注公众号“特斯汀软件测试”。免费干货资料及一手视频资源都可以拿走。

举报
评论 0