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

Selenium无法定位带多class属性的可编辑div输入框元素该如何解决?

问题根源

find_element_by_class_name 仅支持传入单个类名,你传入的writtingArea _editor是两个独立的类名,中间的空格是类名分隔符,因此该方法无法识别匹配,直接报错。

修复方案

方案1:使用CSS选择器定位(推荐)

同时匹配两个类名,写法如下:

# 注意Selenium 4+ 已废弃原find_element_by_* 方法,建议统一使用By类定位
from selenium.webdriver.common.by import By

driver.find_element(By.CSS_SELECTOR, ".writtingArea._editor").click()

如果需要更精准匹配,也可以结合可编辑属性或者占位符属性:

# 结合contenteditable属性
driver.find_element(By.CSS_SELECTOR, ".writtingArea._editor[contenteditable='true']").click()

# 结合placeholder属性
driver.find_element(By.CSS_SELECTOR, 'div[placeholder="보낼 메시지를 입력하세요."]').click()

方案2:使用正确的Xpath写法

如果偏好Xpath定位,可按照如下方式写,避免语法错误:

from selenium.webdriver.common.by import By

# 精确匹配class属性
driver.find_element(By.XPATH, '//div[@class="writtingArea _editor" and @contenteditable="true"]').click()

# 模糊匹配类名,不受类名排序影响
driver.find_element(By.XPATH, '//div[contains(@class,"writtingArea") and contains(@class,"_editor")]').click()

额外注意事项

如果调整定位语法后仍然找不到元素,大概率是元素未完成加载,建议添加显式等待避免时序问题:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 最长等待10秒,直到元素可点击再执行操作
wait = WebDriverWait(driver, 10)
input_area = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".writtingArea._editor")))
input_area.click()
# 输入内容直接调用send_keys即可
input_area.send_keys("测试输入内容")

内容的提问来源于stack exchange,提问作者신호진

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 09:33:03