本文介绍自动化流程运行时,如何动态捕捉控件,完成所需的操作。
概述
对软件界面的操作过程中,可能会需要根据动态内容对界面上某些元素进行操作,例如
填写地址。需要按照省-市-县进行逐个进行选择,但界面不支持直接输入;同时每次流程运行时可能会需要选择不同的省市县。

在日历上选择指定日期。每次流程运行时会需要选择不同的日期。

模拟下拉列表。此类下拉列表交互效果好,但实现方式不是使用html select,而是其他方式(如 ul+li),导致无法直接使用 option、设置下拉框(网页)等对html select的操作。同时下拉列表的备选项也是动态、不确定,每次流程运行时时需要选择不同的选项。

在此类情况下可使用控件属性变量,以达到动态捕捉控件并操作的目的。
示例
示例:下拉列表中动态选择
本例使用阿里云容器镜像服务的控制台中的选择命名空间,备选项都是用户自己创建的,因此无法提前在自动化流程中预设,需要能够动态选择

实现方式
主要思路:首先点击下拉列表,出现备选项;其次动态设置控件属性,完成对指定控件的操作
控件的配置如下
下拉列表控件

备选项控件。outertext属性配置为$namespace(控件属性变量),在流程运行时可以动态设置该变量的值,从而能够动态捕捉控件并操作。

编码开发模式如下,使用
ctrls.variable.assign对该控件属性变量进行赋值。page = rpa.app.chrome.create('https://cr.console.aliyun.com/cn-hangzhou/instance/repositories') # 点击下拉列表 page.click('select') # 使用ctrls.variable.assign方法将$namespace赋值为other0123 ctrls.variable.assign('$namespace','other0123') # 点击备选项 page.click('select-item')可视化开发模式如下

其中自定义脚本中仍然使用
ctrls.variable.assign进行赋值
示例:日历中选择指定日期
本例介绍如何在日历中选择指定年月日。

实现方式
主要思路:年和月是类似下拉列表的操作过程,因此先点击下拉列表、再动态选择指定内容;最后动态点击日期
控件的配置如下
下图为年的下拉列表后,将备选值控件的outertext属性设置为$year(控件属性变量)。对月份的操作可采用相似方式,设置为$month。

操作日志的控件属性,将outertext属性设置为$day。

编码开发模式如下,使用
ctrls.variable.assign对控件属性变量进行赋值,执行效果是选中2024年3月11日page = rpa.app.chrome.create("https://www.baidu.com/s?wd=%E6%97%A5%E5%8E%86") # 选择年 page.click('select_year') ctrls.variable.assign('$year','2024年') page.click('item_year') # 选择月 page.click('select_month') ctrls.variable.assign('$month','3月') page.click('item_month') # 选择日期 ctrls.variable.assign('$day','11') page.click('item_day')
控件属性变量
控件属性变量名需要以$开头
只能使用在控件属性中,同一个控件属性变量可以被多个控件使用
控件属性变量的作用域:本工程内的控件(即编辑器中的工程控件列表),但不包含引入的自定义组件
ctrls.variable.assign支持对同一个控件属性变量多次赋值,值只支持字符串类型




