热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AppleScript介绍

点击蓝字关注我们本文转载自花椒技术1什么是AppleScriptAppleScript是苹果公司推出的一种脚本语言,内置MacOS中,可以直接操作控制M

点击蓝字关注我们

本文转载自花椒技术

1

什么是AppleScript

AppleScript是苹果公司推出的一种脚本语言,内置MacOS中,可以直接操作控制MacOS 以及它的应用程序,是一个实现MacOS自动化的一个极其有力的工具,AppleScript的前身是 HyperCard所使用的脚本语言 HyperTalk。

2

AppleScript的特点

与其他的脚本语言Python 和Javascript相比,AppleScript 最显著的特点就是可以控制其他macOS上的应用程序,我们可以通过使用AppleScript 来完成一些繁琐重复的工作,AppleScript语法简单,接近自然语言,就像在和系统对话一样。另外系统也提供了语法查询字典,可以很方便的查询语法。

3

AppleScript编辑器

MacOS 上有自带的脚本编辑器,支持 AppleScript ,其中有模版工程、模版代码、应用词典等功能,非常方便脚本的编写。

4

AppleScript基础语法

按照惯例,用AppleScript写一个Hello worlddisplay dialog “Hello, world!”

然后运行,就可以看到系统弹出了一个hello world的弹窗。

下面会介绍几种常用的语法

  • 告诉XX做XX 就像上边说的那样,AppleScript 的语法非常接近自然语言,如果你想让一个应用做一些任务,就可以直接告诉他就可以。语法类似于

tell 应用做xx
end tell

eg:启动Safari 然后打开花椒

tell application “Safari”activateopen location “https://www.huajiao.com/“
end tell

上面的代码告诉了Safari启动,然后打开花椒。这个很接近于英语的表达方式。

  • 设置变量

set <变量名> to <值>

把花椒直播的网址设置为变量huajiao

set huajiao to “https://www.huajiao.com/“
tell application “Safari”activateopen location huajiao
end tell

把地址设置为huajiao变量&#xff0c;然后打开

  • 条件语句

if 条件 then…
else if 条件 then…
else…
end if

eg:

set huajiao to “https://www.huajiao.com/“
set baidu to “http://www.baidu.com”
set num to 1tell application “Safari”activateif num > 2 thenopen location huajiaoelseopen location baiduend if
end tell

  • 循环语句

repeat…exit repeat
end repeatrepeat while…
end repeatrepeat with…
end repeat

eg:

repeat with num in [1, 2, 3]display dialog “hello,word”
end repeat

  • 模拟点击输入事件 系统会默认把所有支持AppleScript的应用的各种按钮命名编号&#xff0c;类似于 button 1 、 window 1 可以通过这些名字直接定位到应用的各种按钮。找到你想要点击的按钮以后&#xff0c;就可以做一些点击输入等操作

首先如何快速拿到各个应用的按钮命名编号 1&#xff09;可以通过 entire contents来打印区域内所有的UI元素来查找元素&#xff0c;也最精确&#xff0c;例如打印qq页面元素

可以直接通过脚本编辑器内置的字典来查看已经安装的所有支持AppleScript的应用&#xff0c;列出来所有支持 AppleScript 的 App&#xff0c;以及各个 App 所支持的接口调用。

介绍一个第三方的软件(UI Browser)。可以通过 直接看到各个软件按钮的名字&#xff0c;这样就可以方便的找到想点击的按钮。Target 选择你要操作的程序&#xff0c;选中对应控件后&#xff0c;勾选Hightlight 对应控件会高亮显示。例如找到QQ的登陆页面关闭按钮&#xff1a;window 1下的checkbox 2

找到这个元素后 1&#xff09;click命令来点击按钮&#xff0c;keystroke输入

click checkbox 2 of window “Window”

2&#xff09;使用输入keystroke 输入一段内容

keystroke “abc”

或者key code 实现单个按键输入(Complete list of AppleScript key codes) 3&#xff09;set value of text field 1 of … to “abc”

5

AppleScript 应用举例

启动登陆QQ

set username to “123456789”
set qqpassword to “zhoujielun”
#启动QQ
tell application “QQ”activate
end tell
delay 1
#输入账号密码
tell application “System Events”set value of text field 1 of window “Window” of application process “QQ” to usernamedelay 2set value of text field 2 of window “Window” of application process “QQ” to qqpassworddelay 1click checkbox 3 of window “Window” of application process “QQ”
end tell

自动发送一个邮件

6

AppleScript 小结

Apple Script 是一个macOS上非常简单的UI自动化控制脚本语言&#xff0c;无需代码基础即可做一些自动化控制&#xff0c;一些系统自带app和第三方app都暴露了很多供脚本调用接口&#xff0c;完全可以将不同的应用串接起来完成一些流畅的自动化操作。

AppleScript详细语法参考苹果官方文档Introduction to AppleScript Language Guide&#xff08;https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html#//apple_ref/doc/uid/TP40000983-CH208-SW1&#xff09;

往期精彩回顾

PHP 8.0 源码编译安装 & JIT 尝鲜

实习招聘|360云平台火热招聘中

360Stack裸金属服务器部署实践

360技术公众号

技术干货|一手资讯|精彩活动

扫码关注我们



推荐阅读
  • 转载:MFC 获得各类指针、句柄的方法
    2019独角兽企业重金招聘Python工程师标准转载:最近有些人在问MFC编程一些要点,有一些句柄的获取、指针的获取是 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
  • VS2010MFC(对话框:为对话框添加控件)
    转自:http:www.jizhuomi.comsoftware151.html上一讲创建了一个名为“Addition”的工程,目的是生成一个实现加法运 ... [详细]
  • UsingPMA-2.5.2-rc2onPHP-4.1.2andnothavingDROPTABLEprivilege,whenI-sel ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • Android获取app应用程序大小的方法
    Android获取app应用程序大小的方法-Android对这种方法进行了封装,我们没有权限去调用这个方法,所以我们只能通过AIDL,然后利用Java的反射机制去调用系统级的方法。 ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
author-avatar
moquan
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有