如何使用Playwright定位包含指定数量子元素的ul元素?
查找包含2个li元素的ul
有两种实用方法可以实现这个需求:
方法一:通过locator的filter方法筛选
利用filter结合子元素存在性判断,精准匹配子元素数量为2的ul:
page.locator('ul').filter({ has: page.locator('li').nth(1), // 确保存在第2个li(索引从0开始) hasNot: page.locator('li').nth(2) // 确保不存在第3个li });
也可以通过evaluate直接计算子元素数量:
page.locator('ul').filter({ async predicate(element) { return element.querySelectorAll('li').length === 2; } });
方法二:使用CSS选择器的:has()伪类
借助CSS伪类直接写出匹配规则:
page.locator('ul:has(li:nth-child(2)):not(:has(li:nth-child(3)))');
该选择器逻辑是:找到包含第2个li元素,且不包含第3个li元素的ul,即恰好有2个li的容器。
你设想的hasCount参数目前Playwright并未提供,以上是可行的替代实现方案。
内容的提问来源于stack exchange,提问作者machineghost
相关产品推荐
相关产品推荐

