自动化工具 利用 selenium 模拟人工操作实现自动化导单 (附视频)

ye · 2018年12月11日 · 最后由 ye 回复于 2018年12月11日 · 2174 次阅读

1.背景

基于客服部的同事工作情况,他们每天每隔 30 分钟都要进行导单工作,甚至要安排专人通宵导单。基本工作流程如下:

2.程序代替人工导单的原因

每天每半小时进行导单,这样反复、机械、繁琐地做同一件事,不仅浪费人力,而且非常低效。

3.被卡住的问题

(1) 处理滑动验证

这里需要用到 selenium 的 ActionChains。

ActionChains 是自动执行低级交互的一种方式,例如:鼠标移动,鼠标点按,键盘操作,文本操作等。

同时,我们需要从滑动块对应的代码中找出滑动动作的相关参数。
发现随着滑动块的向右移动,位置参数 “left” 的值也会发生变化(滑动块越往右移动,参数 “left” 的值随之增加)

所以,只要将滑动块向右移动,松开时候刚好移至参数 “left” 的值对应位置,就能够通过滑动验证。
但是,目前的技术无法通过对图片的识别,从而获取图片缺口的坐标位置。
经过多次的手动滑动,发现图片缺口的坐标位置参数 “left” 都只会是几个值,分别是 180、190、200、210,且当滑动错误 3 次后,页面会刷新,图片缺口的坐标位置会发生改变(与上一次的位置值不同)

我的处理手法是:程序控制滑动块固定移至 “left” 的值为 190 的位置后松开,如果位置不对,3 次过后页面刷新,再次滑动,直到刚好落在正确的位置。

相关代码如下

(2) 判断是否存在可下载的数据

无可下载数据如下

有可下载数据如下

我的处理手法是:因为每一条可下载的数据最右边都会有一个 “处理” 按钮。也就是说,如果没有可下载的数据的话,页面上无法定位到第一行的 “处理” 按钮元素。

相关代码如下:

(3) 上传文件,页面弹出 windows 的窗口

因为一直都是处理浏览器上的元素,当遇到页面弹出 windows 窗口时候,自己还是沉醉于以往的方式,纠结为何这个窗口操作不了。

我的处理手法是:引入 win32api、 win32gui、win32con

4.视频演示

共收到 5 条回复 时间 点赞

为何不直接提需求在后台增加一个定时导单的功能呢? 这比使用 selenium 来操作简单很多吧

ye #2 · 2018年12月11日 Author
Jerry li 回复

1:因为用于导单的系统不是我司开发的,是腾讯等其他公司的系统
2:上传的文件是经过处理后才能够上传的

Jerry li 回复

看那图片验证码应该是企鹅的系统吧

他们用的那两个应该都是外部系统来的,没法直接提需求

ye 回复

明白了。

或者能否看下有没有对应的接口可以直接调用下载? 感觉上会比 ui 自动化灵活一点。

ye #5 · 2018年12月11日 Author
Jerry li 回复

下载有接口可调用,但是上传的接口比较复杂,我使用过 wireshark 抓包看上传的请求报文,但是看不懂

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册