Applescript:等待一个动作/事件完成

时间:2013-08-26 12:57:46

标签: download applescript delay wait

我正在编写一个脚本来从iTunes Store下载免费/非免费应用程序。 每次下载,需要5到10秒。

例如:

重复1000次

download_app()

结束重复

on download_app()

下载东西......

延迟10

结束download_app

为了下载一个应用程序1000次,需要花费大量时间,我想优化这个时间。而不是使用延迟10,还有其他方法可以做到吗?

有没有办法让iTunes下载状态/忙碌状态?

请建议。

高级谢谢

拉​​赫曼

1 个答案:

答案 0 :(得分:1)

我没有具体的解决方案,但以下代码可能会提供一个有用的示例:

tell application "System Events"
    tell application process "Safari"
        repeat
            if (accessibility description of (get properties of button 1 of text field 1 of splitter group 1 of group 2 of tool bar 1 of window 1)) does not contain "stop" then exit repeat
        end repeat
    end tell
end tell

此代码暂停脚本,直到网页加载完毕。它通过进入无限循环并在达到条件时突破循环来实现。

条件似乎相当复杂,但它确实检查了一些简单的事情。在Safari URL字段的右侧,有一个停止/重新加载按钮。页面加载时,会显示停止图标。页面停止加载后,会显示重新加载图标。因此,当我们不再看到停止图标时,页面必须已完成加载。

大多数代码相当加密地导航GUI以识别所描述的按钮。术语accessibility description用于标识按钮的当前状态。可访问性描述是在可访问性模式下运行Mac OS X的残障人士(例如视障人士)大声说出的内容。当然,在页面加载时,按钮被描述为“停止”。

如果下载完成后iTunes GUI的某些交互方面发生变化(很可能是一个按钮),您可以以类似的方式检测其状态变化,并将其用作继续脚本的提示。

希望有所帮助。 (My example implementation of the code.我发现它非常精确 - 在页面加载完成后脚本会立即继续。)

披露:不是我的原始代码 - 我在互联网上找到了它。