AttributeError: 'WebDriver' object has no attribute 'find_element_by_id'
在Selenium 4及以上版本中,find_element_by_* 和 find_elements_by_* 这类方法已经被弃用并移除了,所以使用会报错:
AttributeError: 'WebDriver' object has no attribute 'find_element_by_id'
从Selenium 4开始,推荐使用新的方法find_element()和find_elements()结合By类来定位元素。
python
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
# 1. 按 id 定位
element = driver.find_element(By.ID, "element-id")
# 2. 按 name 定位
element = driver.find_element(By.NAME, "element-name")
# 3. 按 class 定位
element = driver.find_element(By.CLASS_NAME, "element-class")
# 4. 按 tag 标签定位
element = driver.find_element(By.TAG_NAME, "input")
# 5. 按链接文本定位
element = driver.find_element(By.LINK_TEXT, "Click Here")
# 6. 按部分链接文本定位
element = driver.find_element(By.PARTIAL_LINK_TEXT, "Click")
# 7. 按 xpath 定位
element = driver.find_element(By.XPATH, "//div[@id='element-id']")
# 8. 按 css 选择器定位
element = driver.find_element(By.CSS_SELECTOR, "#element-id .element-class")