使用Selenium在Python中尝试'find_element_by_class_name'时出现AttributeError

0 投票
2 回答
27 浏览
提问于 2025-04-14 18:08

我正在尝试创建一个工具,利用Selenium WebDriver自动输入网页上某个特定类的每个字母。但是,我遇到了一个错误:

AttributeError: 'WebDriver' object has no attribute 'find_elements_by_class_name'

这是我的Python代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Edge()

driver.get("https://example.com")

letters_divs = driver.find_elements_by_class_name("word")

for div in letters_divs:
    letters = div.find_elements_by_tag_name("letter")
    
    for letter in letters:
        target_element = driver.find_element_by_id("wordsInput")
        target_element.send_keys(letter.text)
driver.quit()

错误发生在我试图通过类名找到元素的那一行。我已经有了文本框的类名和ID,输入应该发生在这里。

如果有人能帮我看看这个错误为什么会出现,以及如何解决它,我将非常感激。

2 个回答

1

把这个:

letters_divs = driver.find_elements_by_class_name("word")
letters = div.find_elements_by_tag_name("letter")
target_element = driver.find_element_by_id("wordsInput")

改成:

letters_divs = driver.find_elements(By.CLASS_NAME, "word")
letters = div.find_elements(By.TAG_NAME, "letter")
target_element = driver.find_elements(By.ID, "wordsInput")

请看下面,你使用的方法从 selenium v4.3.0 开始就不再推荐使用了。

在这里输入图片描述

参考链接: https://github.com/SeleniumHQ/selenium/blob/a4995e2c096239b42c373f26498a6c9bb4f2b3e7/py/CHANGES

1

如果你在使用最近版本的Selenium,像 .find_elements_by_* 这种查找元素的方法已经被淘汰并且移除了。你需要用下面的方式来替换它们:

driver.find_elements(By.CLASS_NAME, "word")
driver.find_elements(By.TAG_NAME, "letter")
driver.find_elements(By.ID, "wordsInput")

等等。想要了解更多信息,请查看 官方文档

撰写回答