如何通过UiPath构建基于动态ctrlid的选择器?
How to construct a selector based on dynamic ctrlid through UiPath?
这个问题参考了以下问题:
我正在观看视频 SAP Automation with UiPath 以具有有效凭据的用户身份通过 SAP 客户端自动登录。
环境详细信息:
SAP Client: IDES ECC 6.0 incl. EhP7
Host machine: Intel Core i3 CPU with 64 bit - Windows 8 system.
在视频之后,我有一个 Attach Window
activity,其中包含以下两个活动:
Click Text
的 ClickType 为 CLICK_SINGLE
Click Text
的 ClickType 为 CLICK_DOUBLE
Selector Editor或UIExplorer识别的元素如下:
<wnd ctrlid='76836616' />
<wnd ctrlid='100' title='SAP's Advanced Treelist' />
和
<wnd ctrlid='76836616' />
<wnd ctrlid='5002' title='myContainer' />
<wnd ctrlid='1008' />
<ctrl name='SAP_IDES' role='list item' />
如您所见,ctrlid
对于两个元素都是相同的,但有些是动态的。然而,前几次处决是完美的。
在经过相当长的时间后尝试执行工作流时,问题开始出现。我遇到了一个错误:
Error {"message":"Click Text 'SAPTreeList': Cannot find the UI element corresponding to this selector: <wnd ctrlid='90279688' /><wnd ctrlid='100' title='SAP's Advanced Treelist' />","level":"Error","logType":"Default","timeStamp":"2019-02-06T13:16:44.295729+05:30","fingerprint":"bec67d2a-14d1-4b93-ac06-03156aea69fe","windowsIdentity":"AtechM-03\AtechM_03","machineName":"ATECHM-03","processName":"LearningUiPath","processVersion":"1.0.0.0","jobId":"e7f88d9e-e485-4eee-8a54-7450771238f3","robotName":"ATECHM_03","machineId":0,"fileName":"Main"}
因此从错误消息中可以清楚地看出 selector
不是有效的选择器。
使用 Selector Editor 和 UI Explorer 我找到了 ctrlid
从 '76836616'
变为 '79865432'
。所以我尝试使用partial selector。观察到UiPath随机:
标识元素省略 <wnd ctrlid='76836616' />
但在执行时显示错误为:
Error {"message":"Click Text 'SAPTreeList': Cannot find the UI element corresponding to this selector: <wnd omit:ctrlid='76836616' /><wnd ctrlid='100' title='SAP's Advanced Treelist' />","level":"Error","logType":"Default","timeStamp":"2019-02-27T11:59:39.2811258+05:30","fingerprint":"752fe27b-16f4-4e7b-95c0-f1e8a6b49e7b","windowsIdentity":"AtechM-03\AtechM_03","machineName":"ATECHM-03","processName":"LearningUiPath","processVersion":"1.0.0.0","jobId":"b6ba7310-749c-4c28-a9d3-d1db0c6c7dec","robotName":"ATECHM_03","machineId":0,"fileName":"SAP_UserList_BOT"}
将通配符在部分选择器中的元素标识为<wnd ctrlid='7*' />
。这适用于 4-5 轮执行。但是随后 '76836616'
也变为 '88068312'
执行失败。
所以我的问题是如何适应 动态 ctrlid
,它会不时变化并且是 UiPath 的强制选择器?
UI 路径有一个 anchor base activity 可以在没有可靠的选择器时使用。它是一个锚点容器和一个尝试通过使用其他 UI 元素作为锚点来定位您的 UI 元素的动作活动。您可以同时使用 find element 和 find image 活动作为锚点。
例如,您可以将输入的标签用作输入的锚点,因为标签更改的可能性较小。
请记住,锚基活动 在 背景 中不起作用 。
您可以通过尝试完成此页面中的挑战来测试锚库的效率/可靠性activity。 http://www.rpachallenge.com/ 与您的情况一样,rpachallenge 页面上输入的名称和 ID 属性也会在每次提交时发生变化。
这个问题参考了以下问题:
我正在观看视频 SAP Automation with UiPath 以具有有效凭据的用户身份通过 SAP 客户端自动登录。
环境详细信息:
SAP Client: IDES ECC 6.0 incl. EhP7
Host machine: Intel Core i3 CPU with 64 bit - Windows 8 system.
在视频之后,我有一个 Attach Window
activity,其中包含以下两个活动:
Click Text
的 ClickType 为CLICK_SINGLE
Click Text
的 ClickType 为CLICK_DOUBLE
Selector Editor或UIExplorer识别的元素如下:
<wnd ctrlid='76836616' />
<wnd ctrlid='100' title='SAP's Advanced Treelist' />
和
<wnd ctrlid='76836616' />
<wnd ctrlid='5002' title='myContainer' />
<wnd ctrlid='1008' />
<ctrl name='SAP_IDES' role='list item' />
如您所见,ctrlid
对于两个元素都是相同的,但有些是动态的。然而,前几次处决是完美的。
在经过相当长的时间后尝试执行工作流时,问题开始出现。我遇到了一个错误:
Error {"message":"Click Text 'SAPTreeList': Cannot find the UI element corresponding to this selector: <wnd ctrlid='90279688' /><wnd ctrlid='100' title='SAP's Advanced Treelist' />","level":"Error","logType":"Default","timeStamp":"2019-02-06T13:16:44.295729+05:30","fingerprint":"bec67d2a-14d1-4b93-ac06-03156aea69fe","windowsIdentity":"AtechM-03\AtechM_03","machineName":"ATECHM-03","processName":"LearningUiPath","processVersion":"1.0.0.0","jobId":"e7f88d9e-e485-4eee-8a54-7450771238f3","robotName":"ATECHM_03","machineId":0,"fileName":"Main"}
因此从错误消息中可以清楚地看出 selector
不是有效的选择器。
使用 Selector Editor 和 UI Explorer 我找到了 ctrlid
从 '76836616'
变为 '79865432'
。所以我尝试使用partial selector。观察到UiPath随机:
标识元素省略
<wnd ctrlid='76836616' />
但在执行时显示错误为:Error {"message":"Click Text 'SAPTreeList': Cannot find the UI element corresponding to this selector: <wnd omit:ctrlid='76836616' /><wnd ctrlid='100' title='SAP's Advanced Treelist' />","level":"Error","logType":"Default","timeStamp":"2019-02-27T11:59:39.2811258+05:30","fingerprint":"752fe27b-16f4-4e7b-95c0-f1e8a6b49e7b","windowsIdentity":"AtechM-03\AtechM_03","machineName":"ATECHM-03","processName":"LearningUiPath","processVersion":"1.0.0.0","jobId":"b6ba7310-749c-4c28-a9d3-d1db0c6c7dec","robotName":"ATECHM_03","machineId":0,"fileName":"SAP_UserList_BOT"}
将通配符在部分选择器中的元素标识为
<wnd ctrlid='7*' />
。这适用于 4-5 轮执行。但是随后'76836616'
也变为'88068312'
执行失败。
所以我的问题是如何适应 动态 ctrlid
,它会不时变化并且是 UiPath 的强制选择器?
UI 路径有一个 anchor base activity 可以在没有可靠的选择器时使用。它是一个锚点容器和一个尝试通过使用其他 UI 元素作为锚点来定位您的 UI 元素的动作活动。您可以同时使用 find element 和 find image 活动作为锚点。
例如,您可以将输入的标签用作输入的锚点,因为标签更改的可能性较小。
请记住,锚基活动 在 背景 中不起作用 。
您可以通过尝试完成此页面中的挑战来测试锚库的效率/可靠性activity。 http://www.rpachallenge.com/ 与您的情况一样,rpachallenge 页面上输入的名称和 ID 属性也会在每次提交时发生变化。