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

Catalina系统Safaridriver点击事件失效,UI无响应问题咨询

解决SafariDriver点击无响应的实用方案

我之前在Mac Catalina上用Safari 13.02做自动化测试时,也碰到过一模一样的问题——Safaridriver执行点击操作完全没报错,但界面就是纹丝不动,Chrome和Firefox却一切正常。JS点击虽然能临时解决,但确实和现有框架不兼容。给你几个亲测有效的解决思路,按顺序试试:

  • 检查并修复Safari自动化权限
    这是最容易被忽略的核心问题!你得确保Safari和系统给足了自动化权限:

    1. 打开Safari偏好设置(快捷键Cmd+,),切换到「高级」标签,勾选「在菜单栏中显示“开发”菜单」
    2. 点击顶部菜单栏的「开发」,确认「允许远程自动化」处于勾选状态
    3. 打开系统偏好设置的「安全性与隐私」→「隐私」→「自动化」,确保Safaridriver被授权控制你的电脑;如果没找到相关选项,可以在终端执行tccutil reset com.apple.Safari重置权限,之后重启Safari重新授权
  • 更换元素定位策略
    Safaridriver对某些定位方式的支持不如Chrome/Firefox稳定,你可以调整定位逻辑:

    • 优先使用更精确的CSS选择器,比如结合class和属性:driver.findElement(By.cssSelector("button.login-btn[data-type='submit']"))
    • 避免使用过于宽泛的相对XPath,改用层级更明确的定位规则
    • 一定要给动态加载的元素加显式等待,确保元素完全可点击再执行操作:
      WebDriverWait wait = new WebDriverWait(driver, 10);
      wait.until(ExpectedConditions.elementToBeClickable(By.id("submit-btn"))).click();
      
  • 更新Safari、Safaridriver和Selenium版本
    Safari 13.02确实存在已知的自动化兼容性bug,你可以把Safari更新到Catalina支持的最高版本(15.6.1),Safaridriver会随Safari同步更新;同时确保你的Selenium绑定(比如Java/Python的Selenium库)是最新版(推荐Selenium 3.141.59以上或Selenium 4.x),新版本对SafariDriver的适配更好

  • 用Actions类模拟原生点击(兼容框架)
    既然直接调用click()无效,你可以用Selenium的Actions类模拟真实用户的鼠标操作,这比JS点击更贴合框架逻辑:

    WebElement targetElement = driver.findElement(By.id("target-btn"));
    Actions actions = new Actions(driver);
    // 模拟鼠标移动到元素上再点击
    actions.moveToElement(targetElement).click().perform();
    

    如果还是不行,试试模拟完整的按下+释放动作:

    actions.moveToElement(targetElement).clickAndHold().release().perform();
    
  • 临时禁用Safari智能跟踪预防(ITP)
    ITP的隐私防护机制偶尔会干扰自动化脚本的元素识别,你可以临时关闭它:

    1. 打开Safari偏好设置→「隐私」标签
    2. 取消勾选「阻止跨站跟踪」和「防止网站跟踪我」
    3. 重启Safari后再运行脚本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:07:53