You need to enable JavaScript to run this app. Selenium Safari中如何定位并点击Wunderground天气页的History元素
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Safari中如何定位并点击Wunderground天气页的History元素

Safari驱动下History元素的定位与问题排查

先定位invalid syntax报错的核心原因

这个报错不是Selenium找不到元素的运行时错误,是Python脚本本身的语法书写错误,代码根本没执行到元素定位环节就中断了,常见触发场景:

  • 写定位语句时没有给元素文本、选择器字符串加引号,比如直接写find_element(History)把History当未定义的Python变量,解析时直接触发语法错误
  • 字符串引号嵌套错误,外层用单引号时内层未转义直接使用同类型引号
  • 括号漏写、代码缩进不符合Python语法规则

可靠定位History元素的实现方案

该网站的导航栏class是前端构建生成的动态哈希值,每次页面刷新都会变动,不要依赖class定位。搭配显式等待适配Safari驱动的渲染速度差问题,用文本匹配的方式定位,稳定性最高,实现代码如下:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 驱动初始化完成、访问目标伦敦天气页面后执行
# 最长等待10秒,直到History元素可点击
history_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//a[normalize-space(text())='History']"))
)
history_btn.click()

如果不想写XPath,也可以用Selenium原生的链接文本定位方式,效果完全一致:

history_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.LINK_TEXT, "History"))
)
history_btn.click()

高频踩坑提醒

  • 不要不加等待直接定位元素:Safari驱动的页面渲染速度慢于Chromium内核浏览器,缺少等待逻辑时很容易因为导航栏未加载完成触发定位失败
  • 不要用过短的XPath匹配规则,避免匹配到页面上其他同名元素
  • 确保已经在Safari的开发菜单中开启“允许远程自动化”权限,否则驱动会直接连接失败,和定位逻辑无关

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 00:24:04