当前位置: 首页 > news >正文

用AppleScript做macOS UI自动化

用AppleScript做macOS UI自动化

    • 一、定位到System Setting → General → Login Items& Extensions 页面
      • 1. 获取页面锚点,以便直接滑动到锚点区域
      • 2. 滑动到Extensions 区域
    • 二、根据名称找到元素,再点击元素的按钮
    • 三、获取元素位置并点击

一、定位到System Setting → General → Login Items& Extensions 页面

1. 获取页面锚点,以便直接滑动到锚点区域

tell application "System Settings"get every anchor of current paneend tell

在这里插入图片描述

2. 滑动到Extensions 区域

reveal命令用于在“系统设置”中显示指定的窗格或部分

anchor关键字则用于指定窗格内的一个特定部分或标签页。

tell application "System Settings"activatereveal anchor "ExtensionItems" of pane id "com.apple.LoginItems-Settings.extension"
end tell

二、根据名称找到元素,再点击元素的按钮

期望点[Trend Micro Antivirus Extension]的按钮,所以先根据Text 定位到[Trend Micro Antivirus Extension],再找到他同层级的下一个元素并点击
在这里插入图片描述

-- 启用辅助功能
tell application "System Events"-- 指定目标应用程序tell process "System Settings"-- 打开目标窗口set frontmost to truedelay 1 -- 给窗口一些时间来加载-- 获取目标窗口set targetWindow to window "Login Items & Extensions"-- 获取目标元素的所有兄弟元素(同层次元素)set siblingElements to UI elements of group 3 of scroll area 1 of group 1 of group 2 of splitter group 1 of group 1 of targetWindow-- 初始化变量set targetElementFound to falseset nextElement to missing value-- 遍历所有同层次元素,找到目标元素并获取其下一个元素repeat with i from 1 to count of siblingElementsset currentElement to item i of siblingElementsif value of currentElement contains "Trend Micro Antivirus Extension" thenset targetElementFound to trueelse if targetElementFound thenset nextElement to currentElementexit repeatend ifend repeat-- 点击目标元素的下一个元素的信息if nextElement is not missing value thenperform action "AXPress" of nextElementelsereturn "not found button"end ifend tell
end tell

三、获取元素位置并点击

在这里插入图片描述

通过UI Browser 可以很快得到element
在这里插入图片描述
这里拿到元素坐标,然后用pyautogui.click(),具体见上一篇
AppleScript点击事件无效的问题排查记录

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 外卖系统开发:如何打造一个无缝衔接的用户体验?
  • 建模模型时间说明
  • GPT应用篇:如何用GPT4.0写一本言情小说?
  • atsec出席2024 PCI社区会议
  • 什么软件可以约束员工摸鱼行为?黑神话悟空爆火!上班玩游戏,职场新利器来啦
  • 目标 CDC实例数据库更改密码,预定启动报错SQL 错误代码为“-30082”。SQL 状态为:08001。
  • Haporxy搭建web集群
  • docker 数据存储
  • 财经群里看猴?!苏轼:转念的力量——早读(逆天打工人爬取热门微信文章解读)
  • 别让语法拖后腿:ChatGPT助你告别改稿噩梦!【建议收藏】
  • FPGA 如何进入 AI 领域的思考
  • 【xilinx】学习ZynqSOC发现教程和vitis2023版本界面对不上
  • 《JavaEE进阶》----1.<JavaEE进阶可以学到什么>
  • Unity3D 遍历预制体
  • 架构师面试题系列之Mybatis面试专题及答案(36题)
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 《剑指offer》分解让复杂问题更简单
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Android 架构优化~MVP 架构改造
  • Go 语言编译器的 //go: 详解
  • JAVA_NIO系列——Channel和Buffer详解
  • JavaScript异步流程控制的前世今生
  • LeetCode18.四数之和 JavaScript
  • Less 日常用法
  • Linux CTF 逆向入门
  • MySQL的数据类型
  • Vue.js源码(2):初探List Rendering
  • 包装类对象
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 项目实战-Api的解决方案
  • 用Python写一份独特的元宵节祝福
  • 怎么将电脑中的声音录制成WAV格式
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​如何使用QGIS制作三维建筑
  • #vue3 实现前端下载excel文件模板功能
  • #控制台大学课堂点名问题_课堂随机点名
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (离散数学)逻辑连接词
  • (三)模仿学习-Action数据的模仿
  • (十七)Flink 容错机制
  • (四)模仿学习-完成后台管理页面查询
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (转) ns2/nam与nam实现相关的文件
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)memcache、redis缓存
  • **PHP二维数组遍历时同时赋值
  • .cfg\.dat\.mak(持续补充)
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...