Python中Selenium调用send_keys报错:'list'对象无此属性如何解决?
解决Selenium中AttributeError: 'list' object has no attribute 'send_keys'的问题
问题原因
你调用的browser.find_elements()方法会返回所有匹配指定选择器的元素组成的列表,而send_keys()是单个WebElement对象独有的方法,列表类型没有这个属性,因此触发报错。
解决方案
方案1:使用单数形式的find_element()(推荐)
如果页面中只有一个目标搜索框,直接用find_element()(单数)获取第一个匹配的元素即可,它返回单个WebElement对象,支持send_keys()方法:
from selenium import webdriver from selenium.webdriver.common.by import By import time url = "https://www.youtube.com" browser = webdriver.Chrome() browser.get(url) time.sleep(3) # 替换find_elements为find_element search = browser.find_element(By.XPATH, "//*[@id='search']") search.send_keys("Test")
方案2:从列表中取出单个元素(仅当存在多个匹配元素时使用)
如果页面确实有多个id为search的元素,可通过索引从列表中提取单个元素(例如取第一个元素,索引为0):
from selenium import webdriver from selenium.webdriver.common.by import By import time url = "https://www.youtube.com" browser = webdriver.Chrome() browser.get(url) time.sleep(3) search_elements = browser.find_elements(By.XPATH, "//*[@id='search']") # 取第一个元素 search = search_elements[0] search.send_keys("Test")
额外提示
尽量避免使用time.sleep()这种固定等待,推荐使用Selenium的显式等待WebDriverWait,它会在元素加载完成后再执行操作,稳定性更高。
内容的提问来源于stack exchange,提问作者test
相关产品推荐
相关产品推荐

