无法在运行时与 Web 元素交互

本文解决了在 Microsoft Power Automate 中运行时 Web 自动化操作无法与 Web 元素交互的问题。

适用于: Power Automate
原始 KB 编号: 4599079

症状

Web 自动化操作 (例如,“单击链接”、“填充文本字段”或“获取元素的详细信息”) 在 Microsoft Power Automate 的运行时失败。

正在验证问题

在桌面流的初始开发过程中,可以捕获 Web 元素并与之交互。

原因

某些网页会动态更改其基础 HTML 结构。 因此,最初用于查找元素的 CSS 选择器不再适用。

解决方案

若要解决此问题,可以手动创建新的可靠的 CSS 选择器。 即使 HTML 结构发生更改,它也能找到感兴趣的元素。

为此,请在失败后再次捕获 Web 元素,并将新的 CSS 选择器与旧选择器进行比较。

可以通过选择器生成器窗口查看和编辑 CSS 选择器

可用于查看和编辑 CSS 选择器的选择器生成器页。

请注意这两个选择器之间的差异 - 可能有一个或多个元素或属性不同。

编辑选择器以仅包含不容易更改的静态部分。 可以遵循以下一些方法:

  1. 删除任何动态值(如数字),并相应地修改相关运算符 (“开头为”、“结尾为”、“包含”等。)
  2. 如有必要,请从选择器路径中删除整个元素。
  3. 使用“包含”选择器找到使用网页上可见文本的元素。

示例:

  • 选择器包含具有动态类的元素,例如 div[class="some_class123"]。 这可以修改为 div[class^="some_class"] (“开头为”运算符) 。
  • 选择器包含具有许多动态属性的元素,例如 div[class="some_class123"][id="some_id123"] > a[id="some_id"]。 可以将其修改为 a[id="some_id"] (完全省略第一部分) 。
  • 感兴趣的元素具有一些静态文本 - 可以修改选择器以仅包含该文本。 例如, div[class="some_class123"][id="some_id123"] > a[id="some_id"] 可以修改为 a:contains("the_text_we_see_on_the_webpage")