网页控件不能自动拾取解决方法之一

网页的某些控件会出现无法自动拾取的情况,可以利用查看网页源代码,以及同一网页上可以自动拾取的位置靠近的控件,修改“鼠标点击” 等组件的“查找路径”参数,直接调用组件对应的函数来完成控件的点击等操作。
例如对于我们 CSM 服务端的“视频查询”页面,录像记录列表下方的“上一页”、“下一页”以及具体页数的按钮,RPA 的“鼠标点击”组件无法自动拾取,只能拾取到一个整体的大控件,如下图所示:
网页控件不能自动拾取解决方法之一

网页控件不能自动拾取解决方法之一

而对于靠近这些按钮,同在一个网页区块内的表格中的单元格项目,是可以自动拾取的,如下图:

网页控件不能自动拾取解决方法之一

网页控件不能自动拾取解决方法之一

拾取后的参数如下:
iie.do_click_pos(win_title=r’双录系统 - 录音、录像、录屏 - Internet Explorer’,url=r’http://120.27.137.17/bcarbs_search.action’,selector=r’body > DIV:nth-of-type(1) > FORM:nth-of-type(1) > DIV:nth-of-type(2) > DIV:nth-of-type(2) > FORM:nth-of-type(1) > TABLE:nth-of-type(1) > TBODY:nth-of-type(1) > TR:nth-of-type(12) > TD:nth-of-type(2)‘,button=r’left’,curson=r’center’,times=1,waitfor=10)

因为同属一个页面的同一区块,所以除了参数 selector,即“查找路径”外,其它参数可不修改。要修改“查找路径”参数,需要查看下网页的源代码,比较一下两个控件在网页源码中的关系。
在网页靠近两个控件的位置(因为网页中不同区域可能源码文件不同),右键点击,选择“查看源”,找到两个控件相关代码如下:
不能自动拾取的:
网页控件不能自动拾取解决方法之一

可自动拾取的:
网页控件不能自动拾取解决方法之一

html 元素是层层嵌套的,把这两个元素之外,不影响嵌套关系以及同级同名元素排列关系的其它元素源码删除后,剩余源码如下:
网页控件不能自动拾取解决方法之一

从精简过的源码可看出,不能自动拾取的元素的上两级元素(DIV)与可拾取元素中的(TABLE)这一级元素是相同层级,则把可拾取元素的“查找路径”参数中 TABLE 之前的保留,即:
r’body > DIV:nth-of-type(1) > FORM:nth-of-type(1) > DIV:nth-of-type(2) > DIV:nth-of-type(2) > FORM:nth-of-type(1) >

之后的按照不能拾取元素的 HTML 元素层级名称与顺序填写,如需点击“下一页”,则为:
DIV:nth-of-type(1) > DIV:nth-of-type(1) > SPAN:nth-of-type(3)
(注:因为“下一页”是同层级的第 3 个 SPAN 元素,所以括号中填写 3)

组合起来完整的“下一页”按钮的“查找路径”参数为:
r"body > DIV:nth-of-type(1) > FORM:nth-of-type(1) > DIV:nth-of-type(2) > DIV:nth-of-type(2) > FORM:nth-of-type(1) > DIV:nth-of-type(1) > DIV:nth-of-type(1) > SPAN:nth-of-type(3)"

因为目前版本 RPA 的“鼠标点击”等组件的“查找路径”参数不能在界面上修改,所以增加一个自定义函数,直接调用组件对应的函数即可,例如针对“鼠标点击”组件,增加自定义函数如下:

import ubpa.iie as iie

def do_click_pos(win_title=None,title=None,url=None,selector=None,button=‘left’,curson=‘center’,offsetX=0,offsetY=0,times=1,waitfor=10):
iie.do_click_pos(win_title,title,url,selector,button,curson,offsetX,offsetY,times,waitfor)

然后子流程中调用此自定义函数即可,其中“查找路径”参数(selector)使用上面组合而成的,其它参数拷贝可自动拾取控件拾取后的参数,再之外的参数使用默认值即可。
另外实际使用会发现有点击不准确情况,所以参数中再填写上坐标偏离值,即 offsetX,offsetY 两个参数。
最终点击“下一页”按钮的完整自定义函数参数如下:
win_title=r"双录系统 - 录音、录像、录屏 - Internet Explorer",title=r"",url=“http://120.27.137.17/bcarbs_search.action”,selector=r"body > DIV:nth-of-type(1) > FORM:nth-of-type(1) > DIV:nth-of-type(2) > DIV:nth-of-type(2) > FORM:nth-of-type(1) > DIV:nth-of-type(1) > DIV:nth-of-type(1) > SPAN:nth-of-type(3)",button=‘left’,curson=‘center’,offsetX=10,offsetY=10,times=1,waitfor=10

使用此参数调用自定义函数,即可完成点击。