Selenium Python类名定位获取div文本触发InvalidSelectorException报错
报错根因
- 类名存在字符错配:代码中传入的定位类名为
05uR6d(首字符是数字0),但页面实际元素的类名是O5uR6d(首字符为大写英文字母O),WebDriver匹配类名时严格区分字符、大小写,错配内容本身不满足选择器合法性要求。 - Selenium的
find_element_by_class_name方法会内置CSS选择器规则校验,如果类名真的以数字开头,会直接抛出InvalidSelectorException非法选择器异常。
修复方案
- 修正类名拼写:将定位代码中的类名替换为与页面HTML完全一致的内容,即可正常获取元素文本:
driver.find_element_by_class_name("O5uR6d").text - 若后续遇到类名确实以数字开头、无法通过
find_element_by_class_name定位的场景,可改用CSS选择器定位,对数字开头的类名做转义处理绕过规则校验:# 数字开头类名的转义定位示例 driver.find_element_by_css_selector("div.\\05uR6d").text
注意:WebDriver的元素属性匹配无模糊容错,所有属性值、类名都需要和DOM源码完全一致,字符识别错误(比如把大写O误判为数字0、大小写不匹配)是触发这类异常的高频原因。
内容的提问来源于stack exchange,提问作者Akshay RF
相关产品推荐
相关产品推荐

