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
相关产品推荐
相关产品推荐

