Python中find_element_by_id报错:'WebDriver'对象无该属性
解决Selenium 4.x里
find_element_by_id触发AttributeError的问题 为啥会报错?
Selenium 4.0及以上版本已经彻底移除了find_element_by_id、find_element_by_xpath这类旧的元素定位方法——这些方法在Selenium 3.x里就已经被标为弃用,到4.x直接删掉了,所以你调用的时候自然会触发AttributeError: 'WebDriver' object has no attribute 'find_element_by_id'。
怎么解决?
方法1:用find_element()配合By类
这是官方推荐的替代方案,先导入By模块,再指定定位策略和目标值就行。针对你要点击mouser网站的aHelp按钮,代码改成这样:
from selenium import webdriver from selenium.webdriver.common.by import By # 初始化Chrome驱动(换成你用的浏览器驱动即可) driver = webdriver.Chrome() driver.get("https://www.mouser.com/") # 定位ID为aHelp的按钮并点击 help_btn = driver.find_element(By.ID, "aHelp") help_btn.click() # 操作完成后关闭驱动 driver.quit()
常用旧方法与新写法的对应关系:
find_element_by_id("xxx")→find_element(By.ID, "xxx")find_element_by_name("xxx")→find_element(By.NAME, "xxx")find_element_by_xpath("xxx")→find_element(By.XPATH, "xxx")find_element_by_css_selector("xxx")→find_element(By.CSS_SELECTOR, "xxx")find_element_by_link_text("xxx")→find_element(By.LINK_TEXT, "xxx")
额外提示:避免元素未加载完成的报错
如果页面加载速度慢,可能会出现元素还未渲染完成就去查找的情况,这时可以添加显式等待:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 最多等待10秒,直到目标元素出现 help_btn = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "aHelp")) ) help_btn.click()
内容的提问来源于stack exchange,提问作者86Meesta2
相关产品推荐
相关产品推荐

