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

求助:AppleScript无法点击Preview的Move To对话框侧边栏收藏项

解决Preview“Move To”对话框侧边栏点击无响应的AppleScript问题

问题背景

尝试通过AppleScript自动化Preview的「Move To...」操作,已定位到侧边栏收藏项的UI路径为row 9 of outline 1 of scroll area 1 of splitter group 1 of sheet 1 of window 1,该路径下包含三个元素:

  • UI element xxxx
  • static text xxxx of UI element xxxx
  • image 1 of UI element xxxx

手动打开Preview并调出「Move To」对话框后,运行脚本点击上述元素均无反应,预期点击后应跳转至对应文件夹,但实际未生效,怀疑是焦点问题,但不知如何将焦点设置到侧边栏。

原脚本存在语法错误,整理后的错误脚本如下:

use AppleScript version "2.4" -- Yosemite (10.10) or lateruse scripting additions
set appname to "Preview"

tell application 
    appname activate
end tell

tell application "System Events"
    tell process appname
        delay 1
        click static text 1 of UI element 1 of row 9 of outline 1 of scroll area 1 of splitter group 1 of sheet 1 of window 1
        delay 1
    end tell
end tell

问题分析

  1. 脚本语法错误:use scripting additions与前一行未分隔,tell application后缺少引号包裹应用名,导致脚本无法正确执行。
  2. 焦点缺失:「Move To」作为对话框sheet,未确保其处于激活状态;侧边栏的滚动区域或大纲控件未获得焦点,点击操作无法被识别。
  3. 点击对象错误:直接点击static text元素可能无效,因为文本通常只是显示组件,真正的可交互单元是row或其包含的UI element。

解决方案

修正脚本语法,同时通过设置AXFocused属性确保对话框和侧边栏获得焦点,优先点击可交互的row单元:

use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions

set appname to "Preview"

-- 激活Preview并置于前台
tell application appname
    activate
end tell

tell application "System Events"
    tell process appname
        -- 定位Move To对话框
        set moveToSheet to sheet 1 of window 1
        -- 激活对话框sheet,获取焦点
        set value of attribute "AXFocused" of moveToSheet to true
        delay 0.5
        
        -- 定位侧边栏大纲及目标行
        set targetOutline to outline 1 of scroll area 1 of splitter group 1 of moveToSheet
        set targetRow to row 9 of targetOutline
        
        -- 让侧边栏大纲获得焦点
        set value of attribute "AXFocused" of targetOutline to true
        delay 0.5
        
        -- 点击目标行(优先选择row,因为它是可交互单元)
        click targetRow
        
        -- 如果上述点击无效,可尝试点击row内的UI element
        -- click UI element 1 of targetRow
    end tell
end tell

补充说明

  • 若目标row不在侧边栏可视区域内,可先执行select targetRow让系统自动滚动到该位置后再点击。
  • 根据系统响应速度调整delay的时长,避免因操作过快导致交互失效。
  • 可通过「辅助功能检查器」再次确认UI元素的层级和可交互属性,确保路径正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:15:30