【影刀RPA】循环相似元素场景元素消失——只处理满足条件的【双重判断条件】

一、问题背景:

今天博洋控股有一个场景,非常经典,就是他要去做网页上的审批动作,然后每循环一个审批以后,该条记录会消失,然后判断满足条件的记录有两个限制条件:

1.【合同模板】要等于【前洋二六车位合同】

2.点击【审批按钮】以后,【合同金额】要等于600,并且【租赁时间】大于88小于93

二、解决方法思路:

核心思路还是需要倒叙循环,但是需要注意"点击翻页的条件","以及什么时候退出无限循环"!!!

Q1:什么时候点击翻页?

A1:当前页面上的不满足元素的个数等于当前页面最大展示数(20/页)

Q2:什么时候退出无限循环?

A2:当前页面无满足条件的数据 or 当前页码来到最后一页时

三、流程截图:

影刀流程截图如下:

四、核心步骤:

①:需要新建全局变量列表

需要新建全局变量列表【是否要去点击下一页】,来记录判断是否需要翻页操作!!!

②:判断是否需要翻页:

判断翻页的条件是需要【是否要去点击下一页】列表长度等于当前页面最大展示数(每页20/条)!!!

③:翻页以后务必清空列表:

翻页完毕以后,一定要清空【是否要去点击下一页】列表,保证最新一页的数据是一个空列表然后去进行新页面一轮数据的判断!!!

④:如果不满足翻页条件的时候:

如果不满足翻页条件的时候,说明【是否要去点击下一页】列表的长度不等于【当前页面展示的最大数量】说明在当前页面轮询处理过程中,存在已经处理完的数据(即满足条件的数据),那么需要进行新的一轮轮询,那么此时也是需要清空【是否要去点击下一页】列表的,一定要清空!!!

### 影刀RPA捕获元素失败解决方案 #### 1. 使用校验和修复功能 当在同一框架内选择元素但在子页面中找不到相应元素,或是页面刷新后丢失元素时,建议使用影刀RPA中的校验和修复功能。具体来说,在遇到上述情况时应先尝试点击“校验元素”,随后再点击“修复元素”。这一方法有助于重新定位并稳定选定目标元素的位置[^1]。 #### 2. 更新元素属性匹配条件 如果常规手段仍无法解决问题,则需考虑调整用于识别网页上特定控件的属性集合。可以通过修改XPATH、CSS Selector或其他唯一标识符来提高查找精度,并确保即使页面结构发生变化也能准确定位所需组件。 ```python # Python示例代码展示如何动态更新XPath表达式以适应变化后的DOM树 from selenium import webdriver driver = webdriver.Chrome() element = driver.find_element_by_xpath("//div[@id='uniqueId']") # 原始XPath路径 new_element_path = "//span[contains(@class,'dynamicClass')]" # 新增或变更后的XPath路径 updated_element = driver.find_element_by_xpath(new_element_path) # 应用新的XPath进行重定位 ``` #### 3. 实施等待机制处理异步加载内容 对于因AJAX请求等原因导致延迟显示的内容,适当引入显性和隐性等待可以帮助程序更好地应对这类情形。设置合理的超时期限以及轮询频率能有效提升成功率。 ```java // Java Selenium WebDriver实现智能等待直到某个元素变得可见 WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); WebElement myDynamicElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("myDynamicElement"))); ``` #### 4. 结合图像识别技术增强鲁棒性 除了依赖HTML DOM解析外,还可以借助OCR(光学字符识别)等计算机视觉算法辅助捕捉难以通过传统方式获取的对象。这种方法特别适用于验证码输入框或者其他非标准UI部件。 ```bash pip install pytesseract opencv-python-headless pillow ``` ```python import cv2 import pytesseract from PIL import ImageGrab def capture_and_recognize_text(region=(0, 0, 800, 600)): screenshot = ImageGrab.grab(bbox=region) text = pytesseract.image_to_string(screenshot) return text.strip() print(capture_and_recognize_text()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值