web-dev-qa-db-ja.com

AppleScriptを使用してアプリケーションのウィンドウのボタンをクリックすることを自動化するにはどうすればよいですか?

AppleScriptを使用して、ウィンドウ内のどこかに表示されるボタンをクリックしたいとします。 click buttonは機能しますが、どのボタンを押したいかを正確に知る必要があります。


例:スキャナーが完了するのを常に待ってからImage Capture.appに切り替え、再度スキャン

だから、私はここでこのボタンをクリックすることを自動化したい…

enter image description here

まあ、それは比較的簡単だと思いましたが、最初はこれは私が得た限りです。

tell application "System Events"
    tell process "Image Capture"
        click button "Scan" of window "Image Capture"
    end tell
end tell

もちろん、ボタンはそれよりも深く埋め込まれています(つまり、一部のスプリットグループにあります)。

Accessibility Inspector を使用すると、それがどこにあるかを確認できますが、ボタンを見つけるためにUI要素ツリーを実際に下る必要がありますか?近道はありますか?そうでない場合、click button "Scan" of window "Image Capture"に何が欠けていますか?

enter image description here

より一般的:UI要素階層のどこにボタンがありますか?

8
slhck

ボタンが直接利用できない場合は、推測する必要があるかもしれません。

HighSierraで機能するのは次のとおりです。

tell application "System Events"
    tell process "Image Capture"
        click button "Scan" of group 2 of splitter group 1 of window "Image Capture"
    end tell
end tell

古いmacOSリリースでは、group 1を使用する必要がある場合があります。

別の回避策は、ウィンドウをアクティブにしてスペースバーを押すことです。

tell application "Image Capture"
    activate
    tell application "System Events" to key code 49
end tell

次のようなコマンドを実行することで、実際に近づけることができます。

UI elements of window 1
UI elements of splitter group 1 of window 1
UI elements of group 1 of splitter group 1 of window 1

または、@ Lriがコメントで言ったように:

properties of UI elements of window 1
properties of UI elements of UI elements of window 1

これにより、含まれている要素のリストが表示され、そこから自分の道を推測できます。

9
slhck

MacOS High Sierra10.13.6およびImageCapture 7.0では、上記の回答はこのわずかな変更で機能しました。

tell application "System Events"
    tell process "Image Capture"
        click button "Scan" of group 2 of splitter group 1 of window "Image Capture"
    end tell
end tell
1
Jim Hickstein

これは私のために働きました:

entire contents of window 1

これが不足したとき:

UI elements of window 1
0
Joel