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

Deb*_*anB 5 windows xslt sap msdn uipath

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

目前,我正在使用UiPath来自动化一些工作流程。

环境详细信息:

  • SAP客户端:IDES ECC 6.0含 EhP7

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

尝试在SAPTreeList/中标识元素时,SAP's Advanced TreelistUiPath似乎会检测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_登录_750

的文档CtrlId在msdn.microsoft.com提到:

  • CtrlId属性的值必须介于1到255个字符之间,必须以字母字符开头,并且必须仅包含字母数字和下划线字符。

  • 以下W3C XML Schema(XMLSCHEMA1)片段指定了此元素的内容。

    <xsd:element name="CtrlId" type="xsd:string"/>
    
    Run Code Online (Sandbox Code Playgroud)

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

我在这里想念什么吗?

根据此问题中的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"}
Run Code Online (Sandbox Code Playgroud)

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

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

所以我的问题是:

  • ctrlid元素的是否对任何这些参数有依赖性?
  • 是ctrlid唯一的每个系统中的元素吗?
  • ctrlid内在是动态的jobId吗?

小智 3

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

  • 元素的是否ctrlid对这些参数有任何依赖性?

    UiPath 创建一个提供一些依赖项的选择器,这些依赖项并不总是最佳的,因为其中一些依赖项可能会在每次应用程序运行或另一个元素加载时动态更改。所以,是的,元素在创建时(由 UiPath 指示时)依赖于这些特定参数,但在执行过程中这些参数可能会发生变化,导致选择器“挂起”

  • ctrlid每个系统都有一个独特的元素吗?

    ctrlid根据您的CtrlId链接,某些元素对于每个系统都是唯一的

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

  • 动态是ctrlid一样的jobId吗?

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

在此输入图像描述

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

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