自动登录RPA的进阶:巧妙处理未知通知弹窗

192 阅读3分钟

在之前的两篇文章《自动登录 RPA 的进阶:滑块验证的巧妙实现》《揭秘AI+RPA:CSDN热榜数据抓取RPA》 分享了RPA如何实现知乎或CSDN的自动登录,以及如何自动抓取热榜数据并投喂给大模型。

今天,让我们探讨一个在自动登录 RPA 中经常遇到的问题:完成登录之后,总是出现未知的通知弹窗,我们应该如何巧妙地处理它呢?

场景描述

假设存在这样一个场景:某车企在抖音投放了大量的广告,为了更好地了解广告效果,每天都需要定时从巨量引擎拉取热门车型对应的广告产生的数据,例如点击率、搜索量等。并且,你已经拥有了能够自动登录巨量引擎后台的自动登录 RPA,同时还有一个每天定时拉取数据的自动抓取热门车型的 RPA。

然而,马上就要到 1024 程序员节了,巨量引擎推出了一系列活动,这些活动以弹窗的形式出现,恰好挡住了自动抓取热门车型的 RPA。在这种情况下,我们该如何应对呢

常见的处理方式

很多人第一时间想到的处理方式就是人为地手动关闭弹窗,然后让后续的 RPA 流程自动执行。但这种方式不仅费心费力,而且效率低下。

那么,是否存在更好的处理方式呢?答案是肯定的。

巧妙处理未知通知弹窗

我们可以想象一下,当自动抓取热门车型的 RPA 模拟人的动作时,如果找不到对应的选项,它就会报错,然后流程就会中断

那么,我们可以通过捕获这个异常来进行处理。在处理完成之后,再继续寻找元素,这样就可以让 RPA 流程继续顺利进行。

以下是代码实例。

    try:
        # 尝试找到筛选项列表
        multi_ele = client.eles('@@class:search-option')
        # 选择我们关注的筛选项
        multi_ele[0].click()
        client.ele('@data-option-id:SelectOption01').click()
        time.sleep(1)
    except ElementNotFoundError as e:
        log('error', 'search option select failed')
        # 处理未知弹窗
        do(client)
        # 清空输入缓冲区,避免后续操作受到影响
        sys.stdin.flush()
    do(client):
	    # 首先,在页面中寻找弹窗的关闭元素
	    close_ele = client.ele('@class:popup-close-button')
	    # 然后,点击关闭元素,关闭弹窗
	    close_ele.click()
	    # 最后,继续执行筛选项列表元素的操作
	    multi_ele = client.eles('@@class:search-option')
	    multi_ele[0].click()
	    client.ele('@data-option-id:SelectOption01').click()
	    time.sleep(1)

通过这样的方式,我们可以有效地处理自动登录 RPA 中出现的未知通知弹窗,让 RPA 流程更加稳定和高效。

在实际应用中,我们可能会遇到各种各样的未知弹窗情况,但只要我们掌握了这种异常捕获和处理的方法,就能够灵活应对,确保 RPA 能够顺利完成任务。