如何在Selenium中用后代选择器(>>)通过CSS选择器定位相似元素?
解决Selenium中CSS选择器定位相似元素的问题
错误原因
你使用的>>并不是CSS选择器的合法语法,CSS中表示后代元素的选择器是空格,这是代码报错的核心原因。
两种实现方案
方案1:通过共同祖先批量定位
如果只需匹配目标祖先下的所有img后代(包含你要的xxx和yyy),将>>替换为空格,并使用find_elements(复数形式,返回所有匹配元素):
# 获取所有符合条件的img元素 target_imgs = driver.find_elements(By.CSS_SELECTOR, '#contents > div.tabWrap.pdtTabWrap.fixed > div.tabContents > section.tabCont.active img') # 分别获取xxx和yyy(顺序取决于DOM结构中的出现顺序) xxx = target_imgs[0] yyy = target_imgs[1]
方案2:精确匹配两个特定元素
如果要避免匹配到其他无关img,可以用CSS的多选择器语法(逗号分隔),合并两个完整定位路径:
target_imgs = driver.find_elements(By.CSS_SELECTOR, '#contents > div.tabWrap.pdtTabWrap.fixed > div.tabContents > section.tabCont.active > div > div.prdDetailConWrap > div.prdType.prdType11 > div.imgWrap.imgCrop > img, ' '#contents > div.tabWrap.pdtTabWrap.fixed > div.tabContents > section.tabCont.active > div > div > div.prd_sec.prd_top_type01.sec01.mt0 > div > div.top_img_box > img' ) xxx = target_imgs[0] yyy = target_imgs[1]
注意事项
find_element(单数)仅返回第一个匹配元素,需获取多个元素必须用find_elements(复数)。- 如果DOM中
img顺序不确定,建议给目标元素添加独特识别特征(如class、alt属性),避免索引错误。
内容的提问来源于stack exchange,提问作者user20236531
相关产品推荐
相关产品推荐

