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

Firefox下CLASS_NAME元素定位失败,寻求技术帮助

问题原因及解决方法

你的代码存在核心错误:Selenium的By.CLASS_NAME定位器仅支持传入单个类名,但你传入了两个空格分隔的类名public-DraftStyleDefault-block public-DraftStyleDefault-ltr,Selenium会将其视为一个完整的类名去匹配,而页面中不存在此类元素,因此抛出找不到元素的异常。

解决方法

方法1:用CSS选择器匹配多个类名

这是最直接的修复方式,CSS选择器支持同时匹配多个类名:

driver.find_element(By.CSS_SELECTOR, '.public-DraftStyleDefault-block.public-DraftStyleDefault-ltr').send_keys("good")

注:.代表类选择器,多个类名用.连接(无空格),表示匹配同时拥有这两个类的元素。

方法2:使用单个唯一类名

如果其中一个类名在页面中唯一对应目标元素,也可以直接用单个类名定位:

driver.find_element(By.CLASS_NAME, 'public-DraftStyleDefault-block').send_keys("good")

额外注意事项

  • 若目标元素嵌套在iframe中,需先切换到对应iframe才能定位:
    # 替换为实际的iframe ID、名称或元素定位器
    driver.switch_to.frame(driver.find_element(By.ID, "iframe_id"))
    
  • 建议添加显式等待,避免因元素未加载完成导致定位失败:
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 等待元素可见,最长等待10秒
    target_element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.CSS_SELECTOR, '.public-DraftStyleDefault-block.public-DraftStyleDefault-ltr'))
    )
    target_element.send_keys("good")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:10:12