NOTES 邮箱收件箱固定点击第一封邮件

随着产品的推广,我们与银行业务的深入,在很多项目中,我们遇到了 IBM 的产品 NOTES 邮箱,起初 6.0 版本我们对控件的不支持,到现在 8.0 对 NOTES 邮箱已经可以说支持较好。
在抓取 NOTES 邮箱对收件箱时,只能抓取到整框,下面就是如何判断第一封邮件是否有附件并且点击进入。
NOTES 邮箱收件箱固定点击第一封邮件

def get_header(win_class=r'NOTES',win_name=r'',selector=[],header=''):
    ctrl = iautomation.get_control(win_class,win_name,selector)
    ctrl = automation.Control.CreateControlFromControl(ctrl)
    cnt = 0
    while True:
        ctrl = ctrl.GetnextSiblingControl()
        print(ctrl)
        if ctrl.ControlTypeName == 'HeaderControl' and ctrl.Name == header:
            return [ctrl.Name,ctrl.BoundingRectangle]
			print([ctrl.Name,ctrl.BoundingRectangle])
        cnt = cnt + 1
        if cnt > 20:
            break

传入的参数依次是,类,标题名,selector 用鼠标点击当前收件箱,复制 selector 即可。(若处理多个邮箱,标题名可以为空。避免激活窗口错误)
打印出来的 ctrl 是这样的:(无法拿出来数据,只能拍照,标记的部分)
可以看到,当拿到邮件时,ControlType 会变成 TreeItemControl
NOTES 邮箱收件箱固定点击第一封邮件

ctrl.BoundingRectangle 这个函数返回了 4 数字,就是我们拿到这一串字符到坐标。随后拿出来 X 和 Y,点击即可准确到进入到邮件中。
NOTES 邮箱收件箱固定点击第一封邮件

def move_click(t,x,y,tm):
    ics.mouse_click(t,x,y,times=tm)

传入的参数分别是窗口标题名,X 轴坐标,Y 轴坐标,以及点击的次数
即在发件箱的页面,我们先循环里面的内容,判断出来第一封邮件的位置,返回 X,Y 的坐标,利用鼠标点击去进入第一封邮件。

最后感谢吴总的支持。