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

使用Python Selenium访问谷歌地图点击Cookie按钮触发TimeoutException报错求助

解决Selenium访问谷歌地图时Cookie同意按钮超时的问题

嘿,我之前也踩过谷歌地图这个Cookie弹窗的坑,要么找不到元素要么超时,大概率是元素定位不对或者页面加载的问题,给你几个实用的解决思路:

1. 先确认元素定位是否准确

谷歌地图的Cookie同意按钮ID和文本会根据地区、语言甚至页面版本变化,你用的introAgreeButton可能已经失效了。比如你搜的gostilne是斯洛文尼亚语的“餐厅”,对应环境下按钮文本应该是Sprejmi vse,这时候用文本定位会比ID更可靠:

# 针对斯洛文尼亚语环境的XPATH定位
(By.XPATH, "//button[contains(text(), 'Sprejmi vse')]")

你可以按F12打开开发者工具,直接在页面上定位这个按钮,看看它的实际属性是什么,再调整定位器。

2. 调整页面加载策略

默认情况下Chrome会等页面所有资源加载完才执行后续代码,但谷歌地图加载的资源很多,很容易超时。我们可以把加载策略改成eager,这样页面DOM加载完成就可以操作元素了:

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.page_load_strategy = 'eager'  # 只等DOM加载完成
driver = webdriver.Chrome(options=chrome_options)

3. 用更灵活的等待与异常处理

直接链式调用until().click()很容易因为一点小问题就报错,不如拆开来加try-except,同时结合多种等待条件:

修改后的完整代码

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

# 配置Chrome加载策略
chrome_options = Options()
chrome_options.page_load_strategy = 'eager'
driver = webdriver.Chrome(options=chrome_options)

url = 'https://www.google.com/maps/'
driver.get(url)

# 处理Cookie同意弹窗
try:
    # 适配斯洛文尼亚语的同意按钮,可根据你的语言调整文本
    accept_btn = WebDriverWait(driver, 15).until(
        EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Sprejmi vse')]"))
    )
    accept_btn.click()
    print("Cookie同意按钮已点击")
except Exception as e:
    print(f"Cookie按钮处理失败: {str(e)}")
    # 如果没找到按钮,可能页面已经默认同意,直接继续

# 执行搜索操作
try:
    search_box = WebDriverWait(driver, 20).until(
        EC.element_to_be_clickable((By.ID, 'searchboxinput'))
    )
    search_box.send_keys('gostilne')
    # 用Enter键提交搜索,比driver.submit()更可靠
    search_box.send_keys(Keys.ENTER)
except Exception as e:
    print(f"搜索操作失败: {str(e)}")

额外提示

  • 谷歌地图的页面元素经常更新,如果你之后又碰到定位失效,记得重新用开发者工具检查元素属性;
  • 长期来看,使用谷歌地图官方API来获取数据会比Selenium更稳定,也符合谷歌的使用条款,建议你如果有需求可以了解一下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:05:05