用AppleScript做macOS UI自动化

news2024/9/27 6:46:21

用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 pane

end tell

在这里插入图片描述

2. 滑动到Extensions 区域

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

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

tell application "System Settings"
	activate
	reveal 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 true
		delay 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 false
		set nextElement to missing value
		-- 遍历所有同层次元素,找到目标元素并获取其下一个元素
		repeat with i from 1 to count of siblingElements
			set currentElement to item i of siblingElements
			if value of currentElement contains "Trend Micro Antivirus Extension" then
				set targetElementFound to true
			else if targetElementFound then
				set nextElement to currentElement
				exit repeat
			end if
		end repeat
		-- 点击目标元素的下一个元素的信息
		if nextElement is not missing value then
			perform action "AXPress" of nextElement
		else
			return "not found button"
		end if
	end tell
end tell

三、获取元素位置并点击

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2077346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能边缘计算应用教学解决方案

一、引言 随着物联网(IoT)技术的飞速发展,数据生成量呈爆炸式增长,对数据处理速度、实时性和隐私保护的需求日益迫切。在此背景下,人工智能(AI)与边缘计算的结合成为了解决这一挑战的关键技术路…

牛客周赛 Round 57 解题报告 | 珂学家

前言 题解 难度比较适宜,这场周赛出的不错。 A. 小红喜欢1 题型: 签到语法 arr list(map(int, input().split()))print (arr.index(1) 1)B. 小红的树切割 思路:思维 统计边两端为同一颜色的边数即可 n int(input())s input()res 0 for i in r…

python爬虫,使用pyppeteer异步,爬取,获得指定标签内容

获得指定 #pip install pyppeteer,使用 Pyppeteer(异步方案) import asyncio from pyppeteer import launch async def main():browser await launch()page await browser.newPage()await page.goto(http://xxx/#/login)# 等待页面加载完成await page…

企业本地部署大型语言模型(LLMs)构建本地垂直领域知识库的策略|空天防御

0 引言 在数字化转型的浪潮中,传统企业面临着前所未有的机遇与挑战。随着大数据、云计算和人工智能技术的发展,企业积累的私有数据成为了潜在的金矿,等待着被挖掘和利用。大型语言模型(LLMs)作为当前人工智能领域的前…

基于深度学习的手势识别系统

基于深度学习网络的手势识别系统 完整源码数据集报告PPT全套信息 【python设计开发】基于深度学习的手势图像识别处理系统 【包括】代码 PPT 报告 2 需求分析 2.1要求 (1)用Python语言实现程序设计; (2)初识深度学习…

个人网站无缝切换图片格式到 webp 或 avif

当你点进来,恭喜你来对地方了,我写的东西从来都是小白向的(把自己当小白),不会故作厉害写的云里雾里让人看不懂,既然发出来就会有人看到,不是每个人都是程序员懂技术的。 项目 为什么图片格式要…

QT绘制折现图

做一个小工具,需要根据数据绘制折线图,同时拥有方法缩小拖到等功能 运行结果: 原图: 滚轮缩小 滚轮放大 左移右移 鼠标悬停显示点的坐标 源代码 实现 .pro 使用QChart 加入其对应的模块 QT charts customchartview:继承chartView 重写了鼠标点击,鼠标释放,鼠标移…

MAC +win10 笔记本, OBS 桌面音频不起作用 问题 总结

现象: MAC+WIN10笔记本,音频是好好的,可以听,但是OBS使用的时候,桌面音频条,保持静止,录制的视频,也没有系统声音。 问题排查 1、通常的OBS无法捕获音频解决方法 1)、 驱动问题,更新到最新驱动 2)、声音参数配置问题 3)、右侧小喇叭,音量合成器中, 4)、设…

Midjourney Describe API 的对接和使用

Midjourney Describe API 的对接和使用 Midjourney Describe API 的主要功能是通过上传图片,获取对图片的描述。使用该 API,只需要传递图片文件地址,API 会返回图片的详细描述。无需繁琐的参数设置,即可获得高质量的图片描述。 …

VBA技术资料MF180:将某个文件夹中的某类图片导入Word

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

ssrf实现

一、SSRF (Server-side Request Forge, 服务端请求伪造) 1、概念: 它是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所…

SpringBoot项目如何使用和打包本地第三方jar包

有时候我们引用了maven仓库不存在的第三方jar,项目打包后jar包里没有引用的jar,解决方法往下看。 一、目录介绍 SpringBoot项目通过idea打成jar包部署。 将项目打成jar包后,所有引用的jar都存在于BOOT-INF\lib下: 如果存在本地…

HTML静态网页成品作业(HTML+CSS+JS)——迪士尼公主介绍(6个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,使用Javacsript代码,共有6个页面。 二、作品演示 三、代码…

大白话【8】WindowsServer2016搭建DNS服务

1.DNS服务功能介绍 2.DNS服务器搭建 2.0准备环境 2.1把该DNS服务器设置成静态IP 2.2修改主机名(可省略) 2.3安装DNS服务 DNS服务器名为www;IP为192.168.2.100 3.客户机测试 在网内可网络连通的客户机如何验证DNS服务器域名解析有效性&#…

SparkShop开源商城 uploadFile 任意文件上传漏洞复现

0x01 产品简介 SparkShop开源商城(也被称为星火商城)是一款基于ThinkPHP6和Element UI的开源免费可商用的高性能商城系统。适用于各类电商场景,包括但不限于B2C商城、新零售、分销商城等。无论是初创企业还是成熟品牌,都可以通过SparkShop快速搭建个性化独立商城,实现线上…

机器学习:SVM的代码实现

目录 前言 一、完整代码 二、输出结果 三、实现步骤解析 1.读取数据 2.创建模型并训练 3.可视化SVM结果 总结 前言 支持向量机(SVM,Support Vector Machine)是一种用于分类和回归的监督学习算法。它的核心思想是通过在特征空间中找到…

全网最适合入门的面向对象编程教程:39 Python 常用复合数据类型-集合

全网最适合入门的面向对象编程教程:39 Python 常用复合数据类型-集合 摘要: 在 Python 中,集合(set)是一种常用的复合数据类型。集合是一组无序且不重复的元素。与列表和元组不同,集合中的元素是无序的&am…

Webpack中的 HTTP 压缩

http压缩介绍 http压缩,是指一种内置在服务器和客户端之间改进传输速度和带宽利用率的方式。 http 压缩的流程: http 数据在服务器发送前,通过 webpack配置进行压缩;兼容的浏览器在向服务器发送请求时,在请求头中会…

JS Java Script知识简单记录

JS 参考 导入方式 内联样式,和css(style)很像 script标签导入,可以放在head或body标签中 外联样式 打印内容方式 console.log:在控制台显示 alert:网页弹窗 JS变量 var函数作用域,let是块作用域…

OpenCV杂项图像变换(2)线性混合函数blendLinear()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 执行两个图像的线性混合: dst ( i , j ) weights1 ( i , j ) ∗ src1 ( i , j ) weights2 ( i , j ) ∗ src2 ( i , j ) \texttt{…