艺赛旗 RPA8.0全新首发免费下载 点击下载
http://www.i-search.com.cn/index.html?from=line1
2. 如果没有将虚拟机与物理机的鼠标进行同步,则可能导致验证码识别过程,看不到鼠标点击拖动的情形,以至于后续无法准确估算鼠标点击拖动的位置信息。
流程全览
在这里插入图片描述](https://img-blog.csdnimg.cn/20190315133737544.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ0NzY4Nw==,size_16,color_FFFFFF,t_70)
测试地址:‘http://www.jq22.com/yanshi19009’(推荐使用“谷歌浏览器”打开)
3.2 基于页面美观考虑,我们使用“序列”组件
3.3 激活窗口并截图
Note:
Note:
8000: 滑动验证码
8001:坐标验证码(成语验证等)
1004:4 位英文数字
2004:4 位纯汉字
3.5 位置处理
获取鼠标的相对位置信息(坐标仅相对于整个验证截图),即鼠标需要实际拖动的距离 = b
输出结果:
3.6 弹出拖动距离的消息提示框
每次拖动前,弹出位置处理得出的拖动距离。目的:可以更明确每次获取的位置信息;同时有助于后续多次调节坐标位置
Note:
由下载论坛网站的破解滑动验证码工程文件(…/huadong/project.pro)发现如下规律:
同样的网站截取相同滑动验证图片,得到的参数信息并不同。使用原工程中截图,在本机下执行原工程文件,鼠标不在原来初始位置点击,而改变网页整体位置后,可以实现鼠标点中初始位置。界面大致如下:
结论:我们设定计算出的鼠标点击拖动初始位置信息与电脑显示屏大小相关
3.7 代码实现点击鼠标拖动
代码如下:
from ctypes import *
from ctypes.wintypes import *
def imouse_drag(x1, y1, x2, y2,button=‘left’,speed=10):
try:
dll = windll.LoadLibrary("../Com.Isearch.Func.AutoIt/AutoItX3.dll")
return dll.AU3_MouseClickDrag(button,x1,y1,x2,y2,speed)
except Exception as e:
raise e
3.8 计算坐标参数值 - 获取起始位置
在这里插入图片描述
Note:
实现点击鼠标拖动的方法,我们需要得到 x1,y1,x2,y2 四个参数值。
由“截图”控件右边属性栏的位置参数信息,可根据以下计算公式得出:
x1 = (左边位置 + 预估值)/ 2
(预估值:蓝色滑块的水平中心位置)
y1 = y2 = (上边位置 + 高度 - 预估值)/ 2
(预估值:蓝色滑块的垂直中心位置)
x2 = x1’ + b
(此处 x1’可根据多次滑动验证与缺口图准确距离的偏差取平均值)
3.9 异常处理 - 考虑验证失败情况
在这里插入图片描述
思路:
此处用 while 循环,条件设为 True,即:在死循环的条件下进行验证码的识别过程,直到识别成功;
同时考虑异常处理的情况:若在验证过程出现异常,即使用热键 Ctrl+R 刷新页面,进行下一次循环
完整流程包:
http://support.i-search.com.cn/upload/bbs/20190315/fe10decb07464dfa89ae81e644eda645_huadong.zip