为什么UiPath检测到的ctrlid格式与XSLT表示中记录的格式不同?

问题描述 投票:6回答:1

为什么UiPath Studio检测到的ctrlid格式与XSLT表示中记录的格式不同?

目前,我正在与UiPath合作,以自动化一些工作流程。

环境细节:

  • SAP客户端:IDES ECC 6.0 incl。 EhP7
  • 主机:64位Intel Core i3 CPU - Windows 8系统。

在尝试识别SAPTreeList / SAP's Advanced Treelist中的元素时,似乎UiPath以下列格式检测到ctrlid

  • <wnd ctrlid='74372104' />
  • <wnd ctrlid='59648' idx='1' />
  • <wnd ctrlid='59648' />
  • <wnd ctrlid='74937216' />
  • <wnd ctrlid='100' title='SAP&apos;s Advanced Treelist' />

快照:

SAP_Logon_750

CtrlIdmsdn.microsoft.com的文档提到:

  • CtrlId属性的值必须在1到255个字符之间,必须以字母字符开头,并且必须只包含字母数字和下划线字符。
  • 以下W3C XML Schema(XMLSCHEMA1)片段指定此元素的内容。 <xsd:element name="CtrlId" type="xsd:string"/>

因此,UiPath Studio检测到的ctrlid格式似乎与文档格式和规范不同。

我在这里错过了什么吗?

根据this question中的Execution.log:

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"}

错误详细信息还包含以下字段:

  • level
  • logType
  • timeStamp
  • fingerprint
  • windowsIdentity
  • machineName
  • processName
  • processVersion
  • jobId
  • robotName
  • machineId
  • fileName

所以我的问题是:

  • 元素的ctrlid是否依赖于这些参数中的任何一个?
  • ctrlid是每个系统独有的元素吗?
  • ctrlid是否在同一个jobId内动态?
windows xslt sap msdn uipath
1个回答
3
投票

我将尝试就如何理解问题提供一些答案:

  • 元素的ctrlid是否依赖于这些参数中的任何一个? UiPath创建了一个提供一些依赖项的选择器,这些依赖项并不总是最优的,因为其中一些可能会在每次运行应用程序或其他元素加载时动态更改。所以是的,元素在创建时依赖于这些特定参数(由UiPath指示)但在执行期间这些参数可能会发生变化,导致选择器“挂起”
  • ctrlid是每个系统独有的元素吗? 根据您与ctrlid的链接,一些CtrlId元素是每个系统所独有的

对于表单中的每个按钮控件和图片按钮控件,此属性的值应该是唯一的。

  • ctrlid是否在同一个jobId内动态?

在其他情况下,ctrlid的价值可能是动态的。在这种情况下,根据您的示例图像(突出显示的值):

enter image description here

  1. UiPath最佳实践建议在构建稳定选择器时避免使用它们
  2. 但是如果你想使用它们,那么你需要使用通配符来使这些动态(尝试'*')或每次检索动态值并在选择器设置中使用它(尝试'+ dynamicValue +')
  3. 最后,您总是需要测试您的选择器,通过反复试验,您将增强您的解决方案。

希望您会发现这些信息有用。

© www.soinside.com 2019 - 2024. All rights reserved.