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

时间:2019-02-20 15:00:58

标签: windows xslt sap msdn uipath

为什么 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架构(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中是动态的吗?

1 个答案:

答案 0 :(得分:3)

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

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

    UiPath创建一个选择器,该选择器提供一些依赖关系,这些依赖关系并不总是最佳的,因为其中一些依赖关系可能在每次应用程序运行或加载另一个元素时动态变化。 因此,是的,在创建元素时(当由UiPath指示时)元素依赖于这些特定参数,但是在执行期间它们可能会改变,从而导致选择器“挂起”

  • ctrlid是每个系统唯一的元素吗?

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

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

  • ctrlid在同一个jobId中是动态的吗?

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

enter image description here

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

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