如何通过UiPath基于动态ctrlid构造选择器?

时间:2019-02-27 06:55:55

标签: windows sap uipath uipath-studio

此问题参考以下问题:

我正在跟踪视频SAP Automation with UiPath,以便以具有有效凭据的用户身份通过​​SAP客户端自动登录。

环境详细信息:

  •   

    SAP客户端:IDES ECC 6.0 incl。 EhP7

  •   

    主机:具有64位的Intel Core i3 CPU-Windows 8系统。

在视频之后,我有一个Attach Window活动,其中包含以下两个活动:

  • 一个Click Text的ClickType CLICK_SINGLE
  • 一个Click Text的ClickType CLICK_DOUBLE

选择器编辑器 UI资源管理器标识的元素如下:

<wnd ctrlid='76836616' />
<wnd ctrlid='100' title='SAP&apos;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&apos;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不是有效的选择器。

使用选择器编辑器 UI资源管理器,我发现 ctrlid '76836616'的变化改为 '79865432' 。因此,我尝试使用部分选择器。观察到 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&apos;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' ,执行失败。

所以我的问题是我如何适应动态变化的{em> ctrlid ,它是UiPath的强制选择器?

1 个答案:

答案 0 :(得分:4)

UI路径具有anchor base activity,在没有可靠的选择器时可以使用。它是锚和动作活动的容器,它通过使用其他UI元素作为锚来尝试定位UI元素。您可以同时使用查找元素查找图片活动作为锚点。

例如,您可以使用标签作为输入的锚点,因为标签更改的可能性较小。

请记住,背景中的锚定基础活动不起作用

您可以通过尝试完成此页面中的挑战来测试锚基础活动的效率/可靠性。 http://www.rpachallenge.com/与您的情况一样,rpachallenge页面上输入的名称和id属性也会在每次提交时更改。