Python Selenium使用nth-of-type和nth-child CSS选择器定位元素问题咨询
问题原因分析
你原来的选择器匹配出错主要有两个原因:
- 你提供的HTML结构存在不规范问题:重复使用了相同的
id="class1",id属性要求全局唯一,如果你实际页面是用class="class1"给两个容器加类名,才可以用类选择器.class1匹配 - 模糊匹配规则
[href*="/home"]过于宽泛,所有包含/home字符串的href都会被命中,link.com/home/def自然也符合匹配规则
修正后的选择器方案
方案1(推荐,不依赖URL前缀,匹配精度最高)
使用结尾匹配符$=限定href以/home结尾,完美避开/home1、/home/xxx这类不符合的路径,完全满足你前缀可变的需求:
.class1:nth-of-type(1) li:nth-child(2) a[href$="/home"]
方案2(严格要求必须用*=模糊匹配时使用)
叠加:not()伪类排除不符合的场景:
.class1:nth-of-type(1) li:nth-child(2) a[href*="/home"]:not([href*="/home/"]):not([href*="home1"])
额外说明
如果你的页面结构稳定,第一个.class1容器下的第二个li固定对应section2,也可以省略多余的属性过滤,直接用层级选择器定位:
.class1:first-of-type li:nth-child(2) a
内容的提问来源于stack exchange,提问作者c0denewbie
相关产品推荐
相关产品推荐

