使用Python版Selenium通过类名定位元素失败的问题求助
解决类名含空格的元素定位问题
嘿,我刚踩过类似的坑,马上帮你搞定这个定位问题!
核心问题所在
你用By.CLASS_NAME传的参数"fl-l score"其实是两个独立的类名——fl-l和score,而By.CLASS_NAME只能接受单个类名作为参数。它会把整个带空格的字符串当作一个完整的类名去查找,自然找不到你的目标元素啦。
可行的解决方案:用CSS_SELECTOR定位
CSS选择器完美支持同时匹配多个类名,而且比动态XPath更稳定,完全适合你的场景。写法是把多个类名用.连接(注意不要加空格,空格代表后代元素):
# 等待元素出现 WebDriverWait(self.driver, 5).until(ec.presence_of_element_located((By.CSS_SELECTOR, ".fl-l.score"))) # 定位元素 score_block = self.driver.find_element(By.CSS_SELECTOR, ".fl-l.score")
为什么这个方法有效?
CSS选择器里的.fl-l.score表示:同时拥有fl-l和score两个类的元素,正好对应你目标div的类名情况。只要这两个类名不会频繁变动,这个定位方式比动态生成的XPath靠谱多了。
内容的提问来源于stack exchange,提问作者Tszhim Chan
相关产品推荐
相关产品推荐

