windows - 为什么 UiPath 检测到的 ctrlid 格式与其 XSLT 表示形式中记录的格式不同?
问题描述
为什么UiPath Studioctrlid
检测到的格式与其XSLT表示形式中记录的格式不同?
目前我正在使用 UiPath 来自动化一些工作流程。
环境细节:
SAP 客户端:IDES ECC 6.0 包括。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's Advanced Treelist' />
快照:
msdn.microsoft.com中CtrlId的文档提到:
CtrlId 属性的值必须介于 1 到 255 个字符之间,必须以字母字符开头,并且必须仅包含字母数字和下划线字符。
以下 W3C XML Schema ( XMLSCHEMA1 ) 片段指定了此元素的内容。
<xsd:element name="CtrlId" type="xsd:string"/>
因此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'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
可能是动态的。在这种情况下,根据您的示例图像(突出显示的值):
- UiPath 最佳实践建议在构建稳定的选择器时避免使用它们
- 但是如果你想使用它们,那么你需要使用通配符使这些动态(尝试'*')或每次检索动态值并在选择器设置中使用它(尝试'+dynamicValue+')
- 最后,您总是需要测试您的选择器,通过反复试验,您将增强您的解决方案。
希望您会发现这些信息很有用。
推荐阅读
- php - PHPMailer多个附件发送电子邮件但没有文件
- python-3.x - 如何将 nRF Connect(适用于 Android)操作模拟到 Pygatt 脚本?
- python - 用字典在python中制作邻接列表以解决图形问题的替代方法?(像矢量
> 在 C++ 中) - swiftui - 如何有条件地呈现 SwiftUI 上下文菜单?
- java - 忽略 CSV 文件中的无效对象
- python - 使用 Python 3.0 创建领结图案
- django - 如何在 django 框架上检测所有模型的插入或更新操作?
- json - 如何在颤动中将文件对象转换为可编码的 json 对象?
- javascript - 返回对象中键的值,作为参数传递,我做错了什么?
- python-3.x - 如何将 on_press 事件用于已动态添加的按钮 kivy