selenium库报错"‘WebDriver’ object has no attribute ‘find_element_by_xpath’";

Selenium元素定位的代码运行之后会报错,发现是Selenium更新到新版本(4.x版本)后,以前的一些常用的代码的语法发生了改变

image.png

Selenium经过版本升级之后,运行后会报错,以driver.find_element_by_id(“value”)为例(其他报错也是类似下面的报错信息),运行后会出现上面的错误。

4版本的Selenium已经不再支持上面的写法,我们需要导入其他方法,改变我们的元素定位写法:

引入By方法

from selenium.webdriver.common.by import By

driver.find_element(By.Name, 'name')


新元素定位方法

 # searchTag = driver.find_element_by_id("value")  # 利用ID定位
 # 改为:
# searchTag = driver.find_element(By.ID, "value")

 # searchTag = driver.find_element_by_class_name("value")  # 利用类名定位
# 改为:
# searchTag = driver.find_element(By.CLASS_NAME, "value")

# searchTag = driver.find_element_by_name("value")  # 利用name属性定位
# 改为:
searchTag = driver.find_element(By.NAME, "value")

# searchTag = driver.find_element_by_tag_name("value")  # 利用标签名定位
# 改为:
searchTag = driver.find_element(By.TAG_NAME, "value")

# searchTag = driver.find_element_by_xpath("value")  # 利用xpath定位
# 改为:
searchTag = driver.find_element(By.XPATH, "value")

# searchTag = driver.find_element_by_css_selector("value")  # 利用CSS选择器定位
# 改为:
searchTag = driver.find_element(By.CSS_SELETOR, "value")