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

使用Python Selenium访问谷歌地图时遇TimeoutException问题求助

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

看起来你卡在谷歌地图的Cookie同意按钮上了,这种TimeoutException通常是因为元素定位器失效或者页面加载的小问题导致的。我帮你分析下原因和解决办法:

问题根源

谷歌地图的Cookie弹窗元素(包括按钮ID)会根据地区、浏览器语言甚至页面版本动态变化,你用的introAgreeButton这个ID可能已经不是当前页面的有效定位符了。另外,有时候弹窗加载会比主页面稍慢,10秒的等待时间可能在某些网络环境下不够。

修复方案

我给你几个更稳定的定位方式,你可以试试:

方案1:用文本内容定位(适配多语言)

既然你搜索的gostilne是斯洛文尼亚语的“餐厅”,推测你的浏览器是斯洛文尼亚语界面,直接用按钮的文本内容定位更准确:

WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.XPATH, '//button[contains(text(), "Sprejmi vse")]'))).click()

如果是英文界面,换成文本"Accept all"即可。

方案2:用CSS选择器定位(更稳定)

谷歌地图的Cookie同意按钮通常带有特定的aria-label属性,用CSS选择器定位比ID更不容易失效:

WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button[aria-label*="Sprejmi"]'))).click()

额外小技巧:如果点击失败,试试JS触发

有时候普通的click()会因为元素遮挡失效,这时候可以用JavaScript直接触发点击:

accept_btn = WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'button[aria-label*="Sprejmi"]')))
driver.execute_script("arguments[0].click();", accept_btn)

完整修改后的代码

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

# 替换成你的ChromeDriver实际路径
driver = webdriver.Chrome('PATH_TO_CHROMEDRIVER')
url = 'https://www.google.com/maps/'
driver.get(url)

# 处理Cookie同意弹窗,加try-except避免弹窗不出现时报错
try:
    accept_btn = WebDriverWait(driver, 15).until(
        EC.element_to_be_clickable((By.XPATH, '//button[contains(text(), "Sprejmi vse")]'))
    )
    accept_btn.click()
except:
    pass

# 执行搜索操作,用回车提交比driver.submit()更可靠
search_box = WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.ID, 'searchboxinput'))
)
search_box.send_keys('gostilne')
search_box.send_keys(Keys.ENTER)

补充说明

  • 记得把PATH_TO_CHROMEDRIVER换成你本地ChromeDriver的实际路径
  • 加try-except块是为了避免Cookie弹窗不出现(比如浏览器已缓存同意状态)时程序崩溃
  • 搜索提交用Keys.ENTER比driver.submit()更稳定,因为submit()会默认找最近的表单,有时候匹配的不是搜索框对应的表单

内容的提问来源于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 07:56:31