You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium使用CSS选择器定位特定类名元素报错问题咨询

问题背景

使用CSS选择器按类名查找页面元素时,出现两段逻辑相似的代码一段正常运行、一段运行失败的异常情况,具体场景如下:

可正常运行场景

  • 对应页面HTML结构截图:正常场景HTML结构
  • 可正常执行的代码片段:
driver.get(url)
print('a') # 标记代码执行位置
disabled_next = driver.find_elements(By.CSS_SELECTOR, '.page-link.next.disabled')
print(disabled_next)

运行失败场景

  • 对应页面HTML结构截图:失败场景HTML结构
  • 运行失败的代码片段:
driver.get(url)
print('a')
enabled_next = driver.find_elements(By.CSS_SELECTOR, '.page-link.next')
print(enabled_next)
  • 异常表现:第二段代码执行时,紧跟在driver.get(url)后的print('a')语句完全没有触发,直接抛出如下报错:
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot determine loading status
from unknown error: unexpected command response
  (Session info: chrome=103.0.5060.66)
  • 当前运行环境:Chrome 103版本 + 同版本号ChromeDriver 103,已知该版本存在部分已知兼容问题。
待咨询问题
  1. 上述报错是版本兼容问题导致,还是.page-link.next的CSS选择器写法存在错误?
  2. 如何提取<a>标签的class属性值,例如获取示例中"page-link next disabled"、"page-link next"这类属性内容?

解答

问题1:报错原因判定

  • .page-link.next的CSS选择器写法完全正确:匹配同时包含多个类名的元素时,将多个类选择器连续书写、中间不加空格是标准CSS语法,用来命中同时带有所有指定类名的元素,写法本身没有任何问题。
  • 该报错是Chrome 103与对应版本ChromeDriver的已知兼容bug,和选择器写法、后续元素查找逻辑没有任何关系。这个bug的典型表现就是driver.get()加载页面时偶发加载状态判定失败,直接抛出异常中断执行流程——这也是为什么print('a')没有运行,代码在driver.get()调用阶段就已经崩溃,根本没有走到后续逻辑。
  • 修复方案:将Chrome和ChromeDriver同步升级到104及以上版本即可,该bug在104版本已被官方修复。如果暂时无法升级版本,可以给driver.get()添加异常捕获重试逻辑,或者将页面加载策略调整为非阻塞模式,绕过这个偶发问题。

问题2:提取a标签class属性值的方法

定位到目标元素对象后,直接调用Selenium内置的get_attribute方法即可获取class属性的完整字符串值,示例代码如下:

# 定位到目标a标签元素
next_btn = driver.find_element(By.CSS_SELECTOR, '.page-link.next')
# 获取class属性的完整内容
class_content = next_btn.get_attribute('class')
# 此时class_content就是"page-link next disabled"或"page-link next"格式的字符串
print(class_content)

# 如果需要拆分为独立的类名列表,直接按空格分割即可
class_list = class_content.split()

如果需要判断下一页按钮是否为禁用状态,既可以检查'disabled' in class_list,也可以直接用.page-link.next.disabled选择器查找元素,根据返回的元素列表是否为空判断状态,两种方式都能实现需求。


内容的提问来源于stack exchange,提问作者jqlifer1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 20:30:53