AppleScript で、Safariを開いた時に、モーダルでダイアログが出てくることがあった。
OKボタンをクリックするために、キーボードのエンターを送信するプログラムを書いたが、動かない。
なぜだろうと考えていたら、
ダイアログが消えた後に、エンターが送信された。
ダイアログが出ている間、AppleScriptは動いていなかった。
そのため、後からエンター送信を記述しても意味がなかった。
ひとつのスレッドで動いているから、このようになるので、
バッググラウンドで、別のコマンドを走らせるようにすれば、いいのではないかと考えた。
Shellで、非同期実行ができると知った。
やってみた。
dialog_click.scpt
do shell script "/bin/sh '【パス】/keybord_enter.sh' > /dev/null 2>&1 &"
最後に 【&】をつけると、うまくいった。
以下では、shellファイルの中で、applescriptを実行している。
keybord_enter.sh
osascript <<EOS
delay 1
tell application "Finder"
tell application "System Events" to keystroke return
beep
end tell
return
EOS
キーボードエンターの代わりに、「cliclick」コマンドを使えば、ダイアログで、マウスクリックもできると思う。