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

Selenium定位指定class元素并点击失败,请求排查错误原因

你的Selenium代码错误分析及修正方案

代码错误点说明

1. 第一个代码(By.CLASS_NAME)的问题

By.CLASS_NAME只能接收单个类名作为参数,不支持CSS选择器语法(比如a[class='...']这种格式),也不能同时指定多个类名,所以这个定位方式从逻辑上就不成立。

2. 第二个代码(By.CSS_SELECTOR)的问题

你写的CSS选择器存在两处错误:

  • 在class属性值里给每个类名前加了.,但原HTML元素的class是用空格分隔的多个类名,不是点分隔的,这会导致选择器匹配不到任何元素。
  • 即便要使用[class='...']属性选择器,也不需要给类名加.,直接写原HTML中的完整类名字符串即可。

正确的实现代码

下面是几种可行的正确写法,按需选择:

写法1:多类名组合的CSS选择器(推荐)

这种方式不需要严格匹配类名顺序,只要元素包含所有指定类名即可:

WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "a.button.button-3.j-save.float_left.j-retailer-start-order-submit"))
).click()

写法2:精确匹配class属性的CSS选择器

这种方式要求类名的顺序和空格完全和HTML一致:

WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "a[class='button button-3 j-save float_left j-retailer-start-order-submit']"))
).click()

写法3:结合文本的XPATH定位

如果元素的文本"Export"唯一,也可以用这种方式提高定位准确性:

WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.XPATH, "//a[@class='button button-3 j-save float_left j-retailer-start-order-submit' and text()='Export']"))
).click()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:15:09