用AppleScript做macOS UI自动化

embedded/2024/9/22 20:36:38/

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"-- 打开目标窗口uiltin class-name">set frontmost to truedelay 1 -- 给窗口一些时间来加载-- 获取目标窗口uiltin class-name">set targetWindow to window "Login Items & Extensions"-- 获取目标元素的所有兄弟元素(同层次元素)uiltin class-name">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-- 初始化变量uiltin class-name">set targetElementFound to falseuiltin class-name">set nextElement to missing value-- 遍历所有同层次元素,找到目标元素并获取其下一个元素repeat with i from 1 to count of siblingElementsuiltin class-name">set currentElement to item i of siblingElementsif value of currentElement contains "Trend Micro Antivirus Extension" thenuiltin class-name">set targetElementFound to trueelse if targetElementFound thenuiltin class-name">set nextElement to currentElementuiltin class-name">exit repeatend ifend repeat-- 点击目标元素的下一个元素的信息if nextElement is not missing value thenperform action "AXPress" of nextElementelseuiltin class-name">return "not found button"end ifend tell
end tell

三、获取元素位置并点击

在这里插入图片描述

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


http://www.ppmy.cn/embedded/101659.html

相关文章

Ubuntu22.04下安装LDAP

目录 1 简单说明2 安装配置2.1 安装1、安装前准备2、安装 OpenLADP3、配置OpenLDAP4、设置基本组5、添加新组5、添加 OpenLDAP 用户 2.2 安装 LDAP 帐户管理器1、安装2、配置 LDAP 帐户管理器 3 简单使用3.1 创建一个组3.2 创建一个用户 总结 1 简单说明 之前写过在Centos下的…

@PathVariable:Spring MVC中的路径变量解析

在Spring MVC中,PathVariable注解是一个非常重要的特性,它允许开发者将URL中的一部分作为参数传递给控制器(Controller)的方法。这种机制在处理RESTful风格的API时尤为有用,因为它使得URL更加简洁且富有表达力。本文将…

深入解析:Objective-C中的NSLock与NSRecursiveLock的异同

标题:深入解析:Objective-C中的NSLock与NSRecursiveLock的异同 在Objective-C编程中,多线程的应用越来越广泛,而线程安全问题也随之成为开发者必须面对的挑战。为了解决这些问题,Objective-C提供了多种同步机制&#…

【Python机器学习】NLP概述——深度处理

自然语言处理流水线的各个阶段可以看作是层,就像是前馈神经网络中的层一样。深度学习就是通过在传统的两层机器学习模型架构(特征提取建模)中添加额外的处理层来创建更复杂的模型和行为。 上图中,前四层对应于聊天机器人流水线中的…

嵌入式Linux学习笔记

1.文件操作命令 2.VI编辑器的部分命令 3.Uboot命令设置环境变量 4. uboot 的顶层 Makefile的重点是“make xxx_defconfig”和“make”这两个命令 ,分别如下: 5.在串口SecureCRT中利用uboot启动Linux内核的两种方式 6.Linux内核移植到开发板上也可以反…

Excel VBA 编程学习指南,1.1 什么是VBA及其应用场景

第一章:VBA简介 1.1 什么是VBA及其应用场景 Visual Basic for Applications (VBA) 是一种内置于Microsoft Office应用程序中的编程语言。它主要用于自动化重复性任务、创建用户自定义的功能,以及扩展Excel等Office程序的功能。VBA是一种事件驱动的编程…

【Java设计模式】非循环访问者模式:简化对象交互

文章目录 【Java设计模式】非循环访问者模式:简化对象交互一、概述二、非循环访问者设计模式的意图三、非循环访问者模式的详细解释及实际示例四、Java中非循环访问者模式的编程示例五、非循环访问者模式类图六、Java中何时使用非循环访问者模式八、非循环访问者模式…

elementUI在事件中传递自定义参数

在使用ElementUI的时候&#xff0c;组件的事件会返回一些参数&#xff0c;有的时候我们想在这个事件中传入自己代码中的参数&#xff0c;因此在这里记录一下传递自定义参数的方式。 方式一&#xff1a;利用回调函数 // 闭包写法 <el-input v-model"input" place…