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.视频演示


↙↙↙阅读原文可查看相关链接,并与作者交流