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

用AppleScript点击无效,继续用pyautogui.click()

目标:点击下图中 CheckBox 元素

在这里插入图片描述

第一步:获取这个元素的位置,并打印出value,确认是开关是关的(value=0)再继续

set targetbox to checkbox 1 of group 1 of scroll area 1 of scroll area 1 of group 1 of group 1 of sheet 1 of window "Login Items & Extensions"set theValue to value of targetbox

在这里插入图片描述

第二步:点击目标元素

1. 用click 事件, 不生效,也无报错

set targetbox to checkbox 1 of group 1 of scroll area 1 of scroll area 1 of group 1 of group 1 of sheet 1 of window "Login Items & Extensions"if targetbox exists thenclick targetbox

2. 用perform action “AXPress”, 不生效,也无报错

perform action "AXPress" of targetbox

3. 用osascript 执行AppleScript,报错10006, 猜测是安全限制问题

do shell script "osascript -e 'tell application \"System Events\" to tell process \"System Extensions (Login Items (System Settings))\" to set value of checkbox \"checkbox 1 of group 1 of scroll area 1 of scroll area 1 of group 1 of group 1 of sheet 1\" of window \"Login Items & Extensions\" to 1'"

4. 直接改value 从0 → 1 , 不生效,也无报错

set value of targetbox to 1
5. 点击元素的坐标,无报错,不生效
trytell checkbox 1 of group 1 of scroll area 1 of scroll area 1 of group 1 of group 1 of sheet 1 of window "Login Items & Extensions"set {xPosition, yPosition} to positionset {xSize, ySize} to sizeend tell-- modify offsets if hot spot is not centered:click at {xPosition + (xSize div 2), yPosition + (ySize div 2)}return {xPosition + (xSize div 2), yPosition + (ySize div 2)}end try

6. 尝试点击其他按钮
点击同层级按钮的坐标,也不行

点击 上上上上层按钮【Done】,可以点也就是说 Done 这层是可以操作的,Done兄弟的下下下下一层就不能操作了

在这里插入图片描述

以下是我的猜测:
从UI Browser中看到这个element 不能显示树状结构,且Application 也变成了 “LoginItems” 而非一开始的“Systems Settings”,所以是到了某个加密的元素了。
Open image-20240812-060324.png
AppleScript 使用 macOS 提供的 API 来控制和自动化 macOS 应用程序。所以API不会破解macOS的加密元素。
而pyautogui 是跨平台的 GUI 自动化,尤其是基于屏幕坐标的操作,所以在AppleScript获取到元素位置后,再尝试用pyautogui.click()事件。

方法一:写click.py,其中包含pyautogui.click()方法,然后直接在AppleScript中run python click.py

方法二:在python文件中运行 AppleScript(以下方法中还包含根据元素名称点击元素的下一个button)

    def enable_macOS15_extension(self,software_name):log.info("enabling %s", software_name)applescript = f"""if major_version  is greater than or equal to 15 thendelay 10-- 获取目标窗口set targetWindow to window "{self.get_L10N_text("LoginItems_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 "{software_name}" thenset targetElementFound to trueelse if targetElementFound thenset nextElement to currentElementexit repeatend ifend repeat-- 点击目标元素的下一个元素的信息if nextElement is not missing value thenclick nextElementdelay 3elsereturn "not found Antivirus Extension button"end if--点击弹窗中的CheckBoxset targetbox to checkbox 1 of group 1 of scroll area 1 of scroll area 1 of group 1 of group 1 of sheet 1 of targetWindowif targetbox exists thenif value of targetbox is 0 thentrytell checkbox 1 of group 1 of scroll area 1 of scroll area 1 of group 1 of group 1 of sheet 1 of targetWindowset {{xPosition, yPosition}} to positionset {{xSize, ySize}} to sizeend tell-- modify offsets if hot spot is not centered:return {{xPosition + (xSize div 2), yPosition + (ySize div 2)}}end tryelsereturn "CheckBox value is 1"end ifelsereturn "Not Found CheckBox"end ifelsereturn "Not macOS15" end if                """wrappedscript = self.wrapper(applescript)output = run_applescript(wrappedscript)checkbox_1 = output.split(",")x_position = int(checkbox_1[0])y_position = int(checkbox_1[1])log.info("CheckBox button at %s, %s",x_position, y_position)pyautogui.click(x=x_position,y=y_position)time.sleep(10)

相关文章:

用AppleScript点击无效,继续用pyautogui.click()

目标:点击下图中 CheckBox 元素 第一步:获取这个元素的位置,并打印出value,确认是开关是关的(value0)再继续 set targetbox to checkbox 1 of group 1 of scroll area 1 of scroll area 1 of group 1 of g…...

谈谈我用MemFire Cloud开发应用的这一两年

作为一个独立开发者,这两年我在应用开发的道路上经历了不少挑战和收获。而帮助我度过这些挑战、提高开发效率的“神器”之一,就是MemFire Cloud。如果你还没听说过这个工具,那么我今天就来和你分享一下我使用MemFire Cloud开发应用的经历&…...

AI安全-文生图

1 需求 2 接口 3 示例 大模型图像安全风险探析 - 先知社区 前言 文生图模型是一种新兴的人工智能技术,它通过对大规模文本数据的学习,能够生成逼真的图像。这种模型包含两个主要组件:一个文本编码器和一个图像生成器。 文本编码器接收文本输入,并将其转换为一种数字化的表示…...

Hibernate 使用详解

在现代的Java开发中,数据持久化是一个至关重要的环节。而在众多持久化框架中,Hibernate以其强大的功能和灵活性,成为了开发者们的首选工具。本文将详细介绍Hibernate的原理、实现过程以及其使用方法,希望能为广大开发者提供一些有…...

乐普医疗校招社招笔试/测评通关攻略、最新北森题库、可搜索答案

乐普医疗为什么要做笔试/测评? 笔试/测评是乐普医疗校招社招招聘流程中的必经环节,只有完成笔试/测评,候选人才有机会进入面试流程,同学们收到笔试测评通知后请尽快完成。我们给部分岗位安排了笔试,笔试的成绩对于面试官来说是很重要的参考依据,请同学们在笔试过程…...

uniapp在线下载安装包更新app

首先用getSystemInfo判断平台、 再通过json文件模拟接口 判断版本号是否一致 不一致则下载服务器apk进行更新 外加网络波动导致失败重新下载更新包 uni.getSystemInfo({success: function (e) {// #ifndef H5// 获取手机系统版本const system e.system.toLowerCase();const pl…...

Unity | AmplifyShaderEditor插件基础(第一集:简单了解ASE和初识)

前言 我本来老老实实的写着我的Shader,群里的小伙伴强烈建议我开始讲ASE,我只能说,我是一个听话的Up。 一、什么是ASE 全称AmplifyShaderEditor,是一个unity插件,存在于unity商城中,售价看他们心情。&am…...

Windows文件资源管理器未响应,磁盘状态正常,很可能是这个原因

最近使用电脑,老感觉性能吃力,就想着自己把一些自动和延迟启动的服务给关掉一些,结果不小心把Work Folders给关闭了。于是,文件资源管理器能正常打开窗口,但是去点击磁盘或者去打开近期访问文件夹,它就会一…...

良好的代码习惯

虽然我们大家都知道这个道理,但能长期坚持下来的并不多。 在多年的项目开发过程中,遇到了各型各色的程序员,有技术一流的,有速度一流的,当然也有bug不断的,但真正能做到养成良好代码习惯并不多&#xff0c…...

音乐生成模型应用

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…...

DBEUG:二维图尺寸没思路

问题 标注总是不对 解决 关注孔(螺纹 沉头 通孔 标注清楚)关注孔的定位(同心圆 靠边定位)0.02一定打开三维图 看装配关系过盈 还是 查公差表可以min max限制装配公差一定要有意义部分宽度变化大的加平行修改的rev改成1 方框1表…...

【图像去雾系列】使用SSR/MSR/MSRCR/MSRCP/automatedMSRCR算法对单图像进行图像增强,达到去雾效果

目录 一 图像去雾算法概述 二 SSR/MSR/MSRCR算法 三 实践 一 图像去雾算法概述 近些年来,出现了众多的单幅图像去雾算法,其主要可以分为 3 类:基于图像增强的去雾算法、基于图像复原的去雾算法和基于 CNN 的去雾算法。 ▲基于图像增强的去雾算法 通过图像增强技术突出图…...

oracle普通导出导入

原始的普通导出导入工具,是一个客户端工具。使用导出工具(export utility简称exp)是将数据从oracle数据库以二进制形式写入操作系统文件,这个文件存储在数据库之外,并且可以被另一个数据库使用导入工具(imp…...

如何将CSDN文章导出为pdf文件

第一步: 打开想要导出的页面,空白处点击鼠标右键⇒点击“检查”或“check”,或直接在页面按F12键。 第二步: 复制以下代码粘贴到控制台,并按回车。 若提示让输入“允许粘贴”或“allow pasting”,按提示…...

利用Python实现供应链管理中的线性规划与资源优化——手机生产计划1

目录 写在开头1. Python与线性规划的基础2.供应链管理中的资源优化3.利用Python进行供应链资源优化3.1 简单的优化实例3.2 考虑多种原材料3.3 多种原材料、交付时间与物流融合的情况 4.规范性分析在供应链管理中的应用价值写在最后 写在开头 在全球供应链日益复杂的背景下&…...

Spring Cloud全解析:配置中心之springCloudConfig分布式配置动态刷新

分布式配置动态刷新 当配置中心中的配置修改之后,客户端并不会进行动态的刷新,每次修改配置文件之后,都需要重启客户端,那么如何才能进行动态刷新呢 可以使用RefreshScope注解配合actuator端点进行手动刷新,不需要重…...

mac如何查看shell是 zsh还是bash

怎么确定mac使用的 shell类型 在终端中输入echo $0命令查看你所使用的 shell(默认使用的zsh) echo $0# 或者 echo $SHELL 如果是 bash 配置文件则为:~/.bash_profile 是 zsh,则配置文件为:~/.zshrc 如何更改默认 S…...

STM32cubeMX配置Systick的bug

STM32cubeMX版本:6.11.0 现象 STM32cubeMX配置Systick的时钟,不管选择不分频 还是8分频。 生成的代码都是一样的,代码都是不分频。 即不管选择不分频还是8分频,Systick都是使用的系统时钟 函数调用 HAL_Init() → HAL_Init…...

分享几个好用js片段

最近在做telegram小程序,所以又回归了web端了,发现几个好用又简洁的代码片段,在这里分享一下。 获取浏览器cookie值 const cookie name > ; ${document.cookie}.split(; ${name}).pop().split(;).shift();cookie(_ga); 2. 将RGB转换为1…...

web前端之实现一只可爱的小杰尼乌龟、伪元素、动画

MENU 前言效果图htmlstyle 前言 代码段使用HTML和CSS创建一个“杰尼龟”的动画。 效果图 html <div class"squirtle"><div class"tail"></div><div class"body"><div class"stomach"></div><d…...

别再只测accuracy!DeepSeek集成测试必须监控的5个隐性指标(P99首token延迟、context bleed率、tool-call schema漂移)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek集成测试的核心范式演进 DeepSeek大模型的工程化落地对集成测试提出了全新挑战&#xff1a;传统基于接口响应码与字段校验的测试范式已难以覆盖语义一致性、推理链鲁棒性、上下文敏感度等高阶质…...

pan-baidu-download:百度网盘多线程下载加速器架构解析与性能优化指南

pan-baidu-download&#xff1a;百度网盘多线程下载加速器架构解析与性能优化指南 【免费下载链接】pan-baidu-download 百度网盘下载脚本 项目地址: https://gitcode.com/gh_mirrors/pa/pan-baidu-download pan-baidu-download是一款基于Python开发的百度网盘命令行下载…...

Unity Visual Scripting不是拖拽玩具:中阶开发者的编程范式重构指南

1. 为什么Unity官方Visual Scripting不是“拖拽完就能跑”的玩具&#xff0c;而是一套需要重新理解的编程范式很多人第一次点开Unity的Visual Scripting&#xff08;VS&#xff09;面板时&#xff0c;看到那些五颜六色的节点和丝滑的连线&#xff0c;下意识觉得&#xff1a;“这…...

16个分片+2副本:pg_shard的master_create_worker_shards最佳实践

16个分片2副本&#xff1a;pg_shard的master_create_worker_shards最佳实践 【免费下载链接】pg_shard ATTENTION: pg_shard is superseded by Citus, its more powerful replacement 项目地址: https://gitcode.com/gh_mirrors/pg/pg_shard pg_shard作为PostgreSQL的分…...

我们公司全员把 Cursor 换成了自研的 全开源AtomCode

【引子】这是一篇实录——一位 CTO 用 28 天,用 Claude GLM 双模型调度,造出了一个让全公司放弃 Cursor 的工具。然后我意识到我们正在经历的事情,比"换工具"大得多。【读者承诺】接下来 15 分钟,你会拿到三件东西:一个真实案例(28 天 1,146 commits 是怎么做出来的…...

绝了!原来毕业论文还能这样写?2026降AIGC工具推荐合集

还在为查重率爆红、AI痕迹太明显、格式乱成一团而发愁&#xff1f;2026 年的 AI 论文工具早已不只是写文章那么简单&#xff0c;从选题构思到降AIGC率、去AI痕迹、查重优化&#xff0c;全流程智能辅助&#xff0c;帮你把论文写作变得简单高效&#xff0c;告别熬夜改稿的焦虑&am…...

终极音乐解锁指南:3步让加密音乐在任何设备自由播放

终极音乐解锁指南&#xff1a;3步让加密音乐在任何设备自由播放 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: https:/…...

Lindy多步骤任务自动化落地全图谱(企业级架构师压箱底实践)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Lindy多步骤任务自动化落地全图谱&#xff08;企业级架构师压箱底实践&#xff09; Lindy效应在自动化系统设计中揭示了一个关键洞察&#xff1a;越久经考验的实践&#xff0c;其未来预期寿命越长。Lindy多步…...

关于软件版本升级的故事

起因在群里有网友说软件的版本升级比较简单&#xff0c;俺就回了四个字母“PACS”&#xff0c;并补上了一个表情 然后看见开始细说了&#xff1a;一、PACS 属于哪一类&#xff1f;PACS 软件 第二类医疗器械&#xff08;独立软件&#xff09;国家药监局分类&#xff1a;Ⅱ 类 2…...

公共卫生机器学习项目中的算法公平性实践:ACAR框架详解

1. 项目概述&#xff1a;当机器学习遇见公共卫生&#xff0c;公平性为何成为“必答题”&#xff1f;在公共卫生领域&#xff0c;机器学习&#xff08;ML&#xff09;正以前所未有的速度渗透到疾病监测、风险分层和资源分配等核心环节。想象一下&#xff0c;一个模型被用来预测某…...