You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium(Python)中send_key调用报错,求问题排查与解决方法

解决Selenium触发谷歌搜索时的AttributeError问题

嘿,我看到你遇到的问题啦,其实这个报错的原因很简单——你写错了一个方法名!

错误根源

你代码里的 driver.find_element_by_name("btnK").send_key(Keys.RETURN) 这一行,send_key 应该是 send_keys(注意末尾的s)。Selenium的WebElement方法是复数形式的send_keys,单数的send_key并不存在,所以才会抛出AttributeError。

另外还有个小细节:你输入文本的地方//The piece of text没有加引号,实际运行时会报语法错误,需要改成带引号的字符串,比如"要搜索的内容"。

修复后的代码

下面是修正后的完整代码,同时给你优化了几个小细节:

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

driver = webdriver.Chrome('C:\\Anaconda3\\Lib\\idlelib\\chromedriver.exe')
driver.set_page_load_timeout(10)  # 这里直接传数字更规范,不用加引号
driver.get("http://google.com")

# 找到搜索框,输入文本后直接发送回车键完成搜索(这种方式比点击按钮更稳定)
search_box = driver.find_element_by_name("q")
search_box.send_keys("你的搜索内容")
search_box.send_keys(Keys.RETURN)

# 如果你还是想用点击搜索按钮的方式,修正拼写后可以这样写:
# driver.find_element_by_name("btnK").send_keys(Keys.RETURN)

time.sleep(4)
driver.quit()  # 记得最后关闭浏览器哦

额外实用建议

  1. 尽量避免用time.sleep(),可以改用Selenium的显式等待,这样能让代码更高效稳定,不会因为网络慢导致元素找不到:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 等待搜索框加载完成后再操作
search_box = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.NAME, "q"))
)
  1. 现在Selenium 4+版本更推荐用find_element(By.NAME, "q")这种新写法,替代旧的find_element_by_name,不过旧方法暂时也还能正常使用。

内容的提问来源于stack exchange,提问作者NotMyName

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:29:50