部分有关元素以及网页的解决方法和优化思路
评论
收藏

部分有关元素以及网页的解决方法和优化思路

经验分享
翊尘
2025-03-31 00:06·浏览量:868
翊尘
发布于 2025-03-30 23:59更新于 2025-03-31 00:06868浏览

一、需求背景

分享下近期遇到的有关元素以及网页的解决方法和优化思路

  1. 未找到指定ID元素
  2. Message:Cannot read properties of undefined (reading 'windowld')
  3. 巧用全局变量动态定位元素

二、具体场景及解决思路

1、未找到指定ID元素

  • 背景/需求

       循环切换账套并导出下载报表,同时报表名称以当前循环到的账套名称命名

  • 难点/报错

       10个账套,每次循环后会显示当前账套,其余9个则在选择框里,即每次循环账套相似元素都会改变;

起初的流程思路是:先获取10个账套的名称,然后每次循环时重新获取相似元素对象列表,判断名称并点击;

按照以上方式,每次循环至第二个账套,在运行导出时的处理下载对话框/下载文件指令时,总会报错【未找到指定ID的元素】

  • 解决方法

       起初一直以为是处理下载对话框/下载文件指令的问题,一直在检查和重试下载的指令;后来重新调整并优化流程,发现是下载指令中重命名传入的动态元素loop_item.gettext()丢失的原因

  • 总结

       尽量保证循环的相似元素组不要变动并且减少在多层嵌套的循环相似元素中使用循环的动态元素,这可能会造成动态元素丢失,导致报错未找到指定ID的元素


2、Message:Cannot read properties of undefined (reading 'windowld')

  • 背景/需求

       循环网页web_page上的相似元素并点击进入下一个网页对象web_page2,在web_page2进行pdf下载操作,随后关闭网页对象web_page2并进行下一次循环

  • 难点/报错

       在循环内使用关闭网页指令指定关闭网页对象web_page2,会连带web_page一起关闭,导致下次循环时报错【Message:Cannot read properties of undefined (reading 'windowld')】

这个错误表明:

1.系统无法读取浏览器窗口的ID属性,这通常意味着:

   ◦ 目标浏览器页面可能已经关闭或刷新

   ◦ 浏览器实例可能已经失效

   ◦ 页面还未完全加载完成

  • 解决方法

   ◦ 在执行元素操作前确保页面已完全加载

   ◦ 添加适当的等待时间

   ◦ 检查浏览器页面变量是否有效

   ◦ 确保在执行操作时浏览器窗口没有被关闭或刷新

   ◦ 若循环内打开的网页对象较少,可以考虑先不关闭新打开的网页对象,等循环操作完统一一起关闭    


3、巧用全局变量动态定位元素

  • 背景/需求

       勾选每个打印标签处中6个复选框中的前两个复选框

  • 解决方法

       一般比较直接的解决思路是:循环这5个块元素,在循环内关联上6个复选框,然后再次循环6个复选框,判断并点击前两个复选框。

上述思路虽然可取,但是指令量多,同时多层循环嵌套,稳定性不高;

因此,可以使用另一种思路:在元素编辑中通过全局变量动态定位元素

通过网页源码我们发现,这五个块元素具有一定规律,因此我们考虑从index属性入手进行定位

具体实现思路如下:

  1. 定义全局变量

2. 在元素编辑界面传入全局变量代替固定值以实现动态定位

3. 指令展示

  • 总结

       这种通过定义全局变量动态定位元素的方式,适用于在多个待选元素中选择目标元素的场景,可以降低指令量以及逻辑复杂度,节省运行时间和空间,保证流程稳定性

收藏2
全部评论1
最新
发布评论
评论