使用Selenium在Python中尝试'find_element_by_class_name'时出现AttributeError
我正在尝试创建一个工具,利用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")
等等。想要了解更多信息,请查看 官方文档。