Apple自动化利器AppleScript

最近发现在mac的办公环境下有很多重复的地方,作为一个对电脑略知一二的人都知道,重复工作做了7次以上就应该用代码解决掉它。这种连接VPN的工作每天都得重复个两三次,那么就写个捷径,自动化它吧。

x01 环境需求

Mac

Accessibility inspector(Mac 自带)

自动化对象(理论来说是任何对象,但是只是对App)

Siri捷径

x02 自动化需求

因为有部分业务需要连接到公司VPN内,软件为Cisco的AnyConnect每天需要点击应用两到三次,这还不是最烦的,还要再点击按钮认证,然后弹框,输入用户名和密码,再点击登录,弹窗,再点击同意认证的协议,才能连接上VPN。因为这个工作非常繁琐,并且之前接触过Siri捷径,就想到自动化解决这个事情了。

x03 APP自动化开发

快捷指令内的AppleScript并不是和单独的scpt文件一样,是简化版的scpt。但是语法逻辑和javascript都是很像的。我认为AppleScript更大白话一些,指令都和说话一样好理解。

先了解一下Mac的key code (键盘码),下图简洁明了:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NRQ1DlID-1662088786595)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/69a03d26-73bd-4512-b95a-f5e269c4048a/Untitled.png)]

本项目只用了48(Tab)和76(Enter)键盘码。

接下来看程序

默认是给一个run函数的,所有命令都运行在run函数内,但是还是建议不用run函数,因为在调试过程中不方便显示信息,例如运行 “ entire contents – 获取所有 UI 元素” 命令时是无返回的:

run函数:

on run {input, parameters}
	(* Your script goes here *)
	return input
end run

首先要打开自己的应用,应用名称可以在任务管理器内找到,我这里是 Anyconnect

activate application "Cisco AnyConnect Secure Mobility Client"

打开应用后就是按照逻辑来走了,但是需要的有以下几点:

注意

1.延迟:delay在本地请求可以设置低点,远程连接时还是尽量长一点,防止等待时间不够

2.最开始我尝试用 keystroke 去输入用户名和密码信息,但是发现会遇到输入法的问题,懒得去用applescript调到默认英文输入法了,就直接把信息放在剪贴板内再粘贴到应用内输入

3.粘贴板处理完后要注意信息的保护,尤其是输入密码,因此最后一项操作是覆盖(清楚)剪切板:

set the clipboard to "helloworld" --清除剪切板

项目代码

activate application "Cisco AnyConnect Secure Mobility Client"
tell application "System Events"
	tell process "Cisco AnyConnect Secure Mobility Client"
		delay 1
		-- entire contents -- 获取所有 UI 元素
		
		key code 76 -- 确认
		delay 1
		-- 输入用户名和密码
		set the clipboard to "xxxx"
		keystroke "v" using command down
		delay 0.5
		
		key code 48 -- 跳转到密码
		delay 0.5
		set the clipboard to "xxxxxx"
		keystroke "v" using command down
		key code 76 -- 点击连接vpn
		delay 1
		
		set the clipboard to "xxxxxxx"
		keystroke "v" using command down
		
		delay 0.5
		key code 76 -- enter
		delay 0.5
		key code 76 --同意协议
		set the clipboard to "helloworld" --清除剪切板

	end tell
	
end tell

x04 踩坑

用到Accessibility inspector去找到自己App内的element了。和Chrome的开发者工具找元素是一样的,非常好用。但是我没有找到具体的element对应的button并点击(请大佬指教)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bqk1B0w2-1662088786596)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/55b75144-661e-4ab7-9829-5d8bb11455c6/Untitled.png)]

参考链接:

https://eastmanreference.com/complete-list-of-applescript-key-codes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值