为什么uipath studio检测到的ctrlid格式在xslt表示形式上与文档格式不同?
目前,我正在与uipath一起工作,以自动化一些工作流。
环境详细信息:
SAP客户端:IDES ECC 6.0,包括ehp7
主机:Intel Core i3 CPU,64位-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' />
快照:
windows - 为什么UiPath检测到的ctrlid格式与XSLT表示中记录的格式不同?-LMLPHP
CtrlId中的msdn.microsoft.com文档提到:
ctrlid属性的值必须介于1到255个字符之间,必须以字母字符开头,并且只能包含字母数字和下划线字符。
下面的w3c xml模式(XMLSCHEMA1)片段指定此元素的内容。

<xsd:element name="CtrlId" type="xsd:string"/>

因此,uipath studio检测到的ctrlid格式似乎与文档格式和规范不同。
我是不是丢了什么东西?
根据execution.log inthis question
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内是动态的?

最佳答案

我将尝试提供一些关于我如何理解这些问题的答案:
元素的ctrlid是否依赖于这些参数?
uipath创建了一个选择器,它提供了一些依赖项,这些依赖项并不总是最佳的,因为其中一些依赖项可能在应用程序每次运行或加载另一个元素时都会动态更改。
因此,是的,元素在创建时(由uipath指示时)依赖于这些特定参数,但是在执行期间,这些参数可能会更改,从而导致选择器“挂起”
元素的ctrlid对每个系统都是唯一的吗?
根据您到CtrlId的链接,每个系统都有一些ctrlid元素是唯一的。
对于表单中的每个按钮控件和图片按钮控件,此属性的值应该是唯一的。
ctrlid是否在同一个jobId内是动态的?
在其他情况下,ctrlid的值可能是动态的。在这种情况下,根据您的示例图像(突出显示的值):
windows - 为什么UiPath检测到的ctrlid格式与XSLT表示中记录的格式不同?-LMLPHP
uipath最佳实践建议在构建稳定选择器时避免使用它们
但如果要使用它们,则需要使用通配符使这些值成为动态值(尝试“*”),或者每次都检索动态值并在选择器设置中使用它(尝试“+dynamic value+”)
最后,您总是需要测试您的选择器,通过尝试和错误,您将增强您的解决方案。
希望你会发现这些信息有用。

07-26 05:26