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

Selenium操作谷歌搜索框遇两类报错:AttributeError与TypeError求助

Selenium谷歌搜索代码报错解决方案

先解决你遇到的两个核心错误:

  1. AttributeError: 'WebDriver' object has no attribute 'send_keys'
    send_keys是网页元素的专属方法,不能直接用在driver对象上。你得先定位到谷歌搜索框元素,再调用这个方法。另外你的finally块逻辑有误——不管try里有没有成功找到元素,finally都会执行,这里应该把输入文本的操作放到try内部,finally用来处理浏览器关闭的收尾工作。

  2. TypeError: presence_of_element_located() takes 1 positional argument but 2 were given
    presence_of_element_located()要求传入一个元组参数,你需要把By.NAME和"gLFyf"包裹在括号里,写成(By.NAME, "gLFyf")再传进去。

额外适配Selenium新版本(4.x+)的改动

Selenium 4.x开始已经弃用了executable_path参数,需要用Service类来指定ChromeDriver路径,避免后续版本兼容问题。

修正后的完整代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.service import Service

# 指定ChromeDriver路径
service = Service("C:\\Program Files (x86)\\chromedriver.exe")
driver = webdriver.Chrome(service=service)

driver.get("https://www.google.com/")
try:
    # 等待搜索框元素加载完成,注意参数是元组格式
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located( (By.NAME, "gLFyf") )
    )
    # 给搜索框输入文本
    element.send_keys("Selenium")
    # 可选:按回车提交搜索
    element.send_keys(Keys.ENTER)
finally:
    # 操作完成后关闭浏览器,释放资源
    driver.quit()

关键改动说明:

  • 引入Service类,替换旧的executable_path参数,适配Selenium 4.x+版本
  • 调整EC.presence_of_element_located的参数为元组格式
  • 将send_keys调用移到try内部,作用于定位到的搜索框元素element
  • finally块里用driver.quit()关闭浏览器,避免资源占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:25:57