macOSのUI自動化はアクティブ化と入力フォーカスを区別する — type前に入力欄を明示クリックする
トラブルシューティング
macOS
UI自動化
知識
運用
macOS のデスクトップアプリを OS レベルで自動操作するとき(System Events / cliclick / CGEvent 系)、アプリのアクティブ化(frontmost 化やウィンドウ配置)はテキスト入力フォーカスを保証しない。この差を知らないと、type 相当の文字入力がエラーなしで丸ごと消える壊れ方をする。
症状と誤解しやすい条件
- シナリオ自体は正常終了し、修飾キー付きショートカット(メニュー起動系)は効くのに、文字入力だけがどこにも現れない。ショートカットはメニューレベルで処理されるためフォーカス不要だが、文字入力はフォーカス中の要素が必要という非対称が原因。
- 手動操作では起動直後から入力できるアプリ(チャットアプリ等)でも、スクリプトからのアクティブ化ではフォーカスが付かないことがある(Electron アプリで実測)。手動の体感を根拠に「クリック不要」と判断しない。
対処
- type の直前に入力欄の座標を明示クリックする手順を固定で入れる。「アクティブ化 → ショートカット → クリック → type」を基本形にする。
- ウィンドウを固定位置・固定サイズに配置してから操作すると、クリック座標がウィンドウ相対で安定する。
切り分け方法
無反応時は、操作直後の画面をフレーム抽出(録画の途中フレームやスクリーンショット)して入力欄に文字が現れたかを目視する。クリック追加で直れば原因はフォーカス、直らなければ入力方式(Unicode 対応・IME)側を疑う、と一段ずつ確定できる。