博客园  :: 首页  :: 管理

在 Power Automate(特别是桌面流 Desktop Flow 或 Web 自动化)中,当你使用 CSS 选择器来定位网页元素时,

:nth-child():eq() 是两个常见的伪类/伪选择器,但它们的含义和行为有显著区别。

1. :nth-child(n)

  • 标准 CSS 伪类,被所有现代浏览器原生支持。
  • 选择的是父元素下的第 n 个子元素,且该子元素必须匹配前面的选择器。
  • 计数从 1 开始(即 :nth-child(1) 表示第一个子元素)。最后一个元素,可以写成:last-child
  • 它只考虑所有子元素中的位置,不管这些子元素的标签名或类型是否匹配你的选择器。
tr:nth-child(2)

表示:选择 <tbody>第二个子元素,并且这个子元素是 <tr>。如果第二个子元素不是 <tr>(比如是注释或文本节点),则不会选中任何东西。

 

2. :eq(n)

  • 不是标准 CSS 选择器,而是 jQuery 特有的扩展。
  • 在 jQuery 中,:eq(n) 会选择匹配当前选择器的所有元素中索引为 n 的那个元素。
  • 计数从 0 开始(即 :eq(0) 表示第一个匹配的元素)。
  • 它先筛选出所有符合前面选择器的元素,再按顺序取第 n 个。

 

笔者这里以最近写的一个实际的例子说明,这种非常合适自定义元素位置,使用Microsoft Power Automate 去定位元素时非常有用

如有多个链接需要点击、或者获取多个元素的文本内容,都可以先通过 自己写的元素定义方法,去定位到元素,再使用 Microsoft Power Automate去操作

iframe[Id="studio-frame"] div[Id="cdk-drop-list-0"] > div > div > div > div > div > cdk-virtual-scroll-viewport > div > table > tbody > tr:nth-child(%LoopIndex%) 

前面的部分可以通过 自动定位元素、最后的 tr:nth-child(%LoopIndex%)  就是自己添加上去的,其中 也是代表 tbody 下,指定的tr行 这里是从1开始的!! 别外具体是第几行,通过 LoopIndex 变量值 

笔者常用于,先定义一个数字变量LoopIndex, 循环,从1开始,到一个比较大数字 ,增量为1, 然后再依次定位到 序列的元素,进行操作、当获取不到元素时,则退出循环!

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/19410208