【问题标题】:Ui-Path: How to handle dynamic web elementsUi-Path:如何处理动态网页元素
【发布时间】:2017-07-04 15:37:26
【问题描述】:

我是 UIPath 工具的新手。如果这是一个糟糕的问题,请接受我的道歉。

我需要单击\sendKeys 一个网页元素,它完全是一个动态元素。 每次加载页面时,ID都会保持变化。

Login 1: <span id="x58Sn0-cnt" class="z-tab-text" uipath_custom_id="8">Update</span>

Login 2: <span id="nT9Tn0-cnt" class="z-tab-text">Update</span>

Note:
Also we can't relay on class "z-tab-text" because so many other elements are sharing the same class.

提前致谢。 :)

【问题讨论】:

  • 两个ID中的-cnt部分呢?
  • @MorrisMiao ID 看起来像是自动生成的东西,并不是说它们是 - 只是看起来像。
  • @Rojer Feds,您能否提供一个链接或更多 HTML 以及页面的图像。 UiPath 有一些非常不错的图像功能?
  • @NicolaiKrüger 如果您可以看到所有以“-cnt”结尾的表单,那么您可能会在选择器中使用通配符,例如*-cnt,你应该可以得到它们。
  • @NicolaiKrüger 另一种方法是使用OCR类型的活动,找到“登录”的位置,并使用相对位置找到您要放置文本的文本框。

标签: uipath


【解决方案1】:

您可以参考父元素以获得正确的选择器,为此您应该使用 css-selector 属性而不是考虑 id html 属性。例如,假设动态元素始终是 div 的第一个子元素,那么您可以使用:

<webctrl css-selector='div span:first-child'/>

css-selector 属性的语法与 HTML 文件的 CSS 表单中的元素选择器中使用的语法相同。

只是为了评论,你还可以在UiPathForum找到更多的技巧和讨论,里面充满了关于这个工具的具体实现的知识和讨论。

【讨论】:

    【解决方案2】:

    我已经使用 idx 管理了这个用例

    我知道不建议在失败的情况下使用图像。现在它是无故障的。

    【讨论】:

      【解决方案3】:

      从外观上看,您可能需要使用通配符运算符(*、?)和 aaname(text) 属性的组合。也许是这样的:

      <webctrl id="*-cnt" aaname="Update" />
      

      通配符:如果您的 ID 的某些部分始终相同,那么至少选择器中的通配符会在选择过程中有所帮助。

      星号 (*) – 替换零个或多个字符

      问号 (?) – 替换单个字符

      UIPath Selectors with Wildcards Documentation

      我建议通过 Foundation Training 获取 UIPath,因为它似乎很有帮助,而且它是免费的。不过,老实说,我认为 RPA 并不适合每个 Web 应用程序使用,尤其是当存在高度动态的 HTML 和不可靠的选择器时。 Angular & Knockout 应用程序就是很好的例子。很多时候 Angular 使用 javascript 对象而不是 UIPath 无法访问的特定 ID 和数据属性,因此这创建了一个环境,您必须在其中创造性地选择可以工作的选择器。这也意味着这些选择器会因任何小的代码更改而中断。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-29
        • 2017-04-30
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        • 1970-01-01
        • 2020-06-21
        • 2018-03-07
        相关资源
        最近更新 更多