RPA高阶(二):邮件类组件、滑动验证码、网页处理

说明:
1.博文中RPA设计器是以4.0版本进行的
2.RPA基础知识可以看艺赛旗官网中的视频进行学习:认证培训

一.邮件类组件

1.发送邮件组件(QQ邮箱为例)

获取QQ邮箱授权码:打开QQ邮箱–》设置–》账户–》开启服务–》生成授权码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击运行,即可发送邮件。
接收者、抄送、密送、附件均可以为多个,规则是以英文逗号分隔
例如:
收件人:‘a@qq.com,b@qq.com,c@qq.com’
附件:‘C:\isearch\a.txt,C:\isearch\b.xlsx’

2.outlook\邮件组件

前提:有outlook应用
注意:
1.执行组件时需关闭Outlook应用
2.发件人默认Outlook中配置的第一个邮箱
3.注意发送频率,建议间隔时间设置成2s以上

二.滑动验证码

1.环境配置

滑动验证码测试网址:https://www.geetest.com/show,注意这里是使用Chrome浏览器打开的,使用IE可能会无法使用
为了使Chrome可以更方便的使用,我们需要安装插件
在这里插入图片描述
打开Chrome的更多工具,选择扩展程序,我们会发现插件已安装上,可以使用鼠标点击进行测试
在这里插入图片描述

2.异常考虑

考虑流程的循环条件及异常处理策略为前提
思路:此处用while循环,条件设为True,即:在死循环的条件下进行验证码的识别过程,直到识别成功;同时考虑异常处理的情况
在这里插入图片描述

3.截图+验证码组件

在这里插入图片描述
使用‘截图’控件截取整个验证图片。(为后续使用验证码识别器获取相对位置信息作准备)

4.位置处理

注意:由于验证码组件有时返回一组坐标[78,145;],偶尔返回两组坐标[78,145;130,145],所以在计算位置之前,建议用if处理进行处理
位置处理:获取鼠标的相对位置信息(坐标仅相对于整个验证截图),即鼠标需要实际拖动的距离=b
在这里插入图片描述

5.获取移动距离

弹出每次拖动距离的消息提示框
在这里插入图片描述
目的:可以更明确每次获取的位置信息;同时有助于后续多次调节坐标位置

6.鼠标拖动

(1)方式一:使用拖动组件
在这里插入图片描述
(2)方式二:使用全局函数

from ctypes import *
from ctypes.wintypes import *

def imouse_drag(x1,y1,x2,y2,button='left',speed=10):
# (x1,y1),(x2,y2)分别表示:鼠标移动的初末坐标点
    try:
        dll = windall.LoadLibrary("../Com.lsearch.Func.Autolt/AutoltX3.dll")
        # 对象为:本地的一个动态链接库文件
        return dll.AU3_MouseClickDrag(button,x1,y1,x2,y2,speed)
        # 使用鼠标点击拖动文件
    except Exception as e:
        raise e

7.计算坐标参数值

在这里插入图片描述
实现点击鼠标拖动的方法,我们需要得到x1,y1,x2,y2四个参数值
由‘截图’控件右边属性栏的位置参数信息,可根据以下计算公式得出:
x1 = (左边位置+预估值)/ 2(预估值为:蓝色滑块的水平中心位置)
y1 = y2 = (上边位置+高度-预估值)/ 2(预估值为:蓝色滑块的垂直中心位置)
x2 = x1’ + b(此处x1’可根据多次滑动验证与缺口图准确距离的偏差取平均值)

8.补充

我们设定计算出的鼠标点击拖动初始位置信息与电脑显示屏大小相关
由下载论坛网站的破解滑动验证码工程文件(…/huadong/project.pro)发现如下规律:
同样的网站截取相同滑动验证图片,得到的参数信息并不同。使用原截图,而在本机下执行原工程文件,鼠标不在原来初始位置点击,改变网页整体位置后,可以实现鼠标点中初始位置。界面大致如下:
在这里插入图片描述

9.判断验证是否成功

根据验证成功后的提示文字作为判断依据:
若成功,则break,跳出死循环;若不成功,则刷新图片
在这里插入图片描述

10.异常处理

若在验证过程中出现异常,即可以点击‘请点击重试’,进行下一次循环
在这里插入图片描述

11.整体流程

在这里插入图片描述

三.网页处理

1.审查网页元素&CSS Selector

在这里插入图片描述
在这里插入图片描述
案例:获取百度热榜
在这里插入图片描述
使用获取文本组件,找到查找路径,发现其规律:

#hotsearch-content-wrapper > LI:nth-of-type(1) > A:nth-of-type(1) > SPAN:nth-of-type(2)
#hotsearch-content-wrapper > LI:nth-of-type(2) > A:nth-of-type(1) > SPAN:nth-of-type(2)
#hotsearch-content-wrapper > LI:nth-of-type(3) > A:nth-of-type(1) > SPAN:nth-of-type(2)

所以设置变量可以为:

'#hotsearch-content-wrapper > LI:nth-of-type({}) > A:nth-of-type(1) > SPAN:nth-of-type(2)'.format(i)

流程展示:
在这里插入图片描述

在这里插入图片描述

2.全局函数

(1)组件代码生成
在这里插入图片描述
(2)组件代码复用
在这里插入图片描述
(3)全局函数使用
在这里插入图片描述

def get_all_data():
    i=1
    while True:
        tmp_selector = '#hotsearch-content-wrapper > LI:nth-of-type({}) > A:nth-of-type(1) > SPAN:nth-of-type(2)'.format(i)
        tmp_val = iie.get_text(waitfor=3.000,selector=tmp_selector,url=r'https://www.baidu.com/')
        i+=1
        if not tmp_val:
            break

在这里插入图片描述
运行结果:
在这里插入图片描述
鼠标点击代码实现
在这里插入图片描述

def click(text):
    i = 1
    while True:
        tmp_selector = '#s-top-left > A:nth-of-type({})'.format(i)
        tmp_val = iie.get_text(waitfor=3.000,selector=tmp_selector,url=r'https://www.baidu.com/')
        if tmp_val == text:
            iie.do_click_pos(waitfor=3.000,run_mode='unctrl',button='left',curson='center',continue_on_error='break',win_title=r'百度一下,你就知道 - Internet Explorer',selector=r'#s-top-left > A:nth-of-type(1)',url=r'https://www.baidu.com/')
            break
        if tmp_val:
            i+=1
        else:
            break

在这里插入图片描述
运行结果:
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值