これは古い質問であることは知っていますが、最近、職場で自動化されたスイートの OSX で FileUpload シートを処理する必要があったので、これを人々のリソースとして投稿すると思いました。前述のような特定の目的で実際に Sikuli を使用していますが、視覚的な認識が必要なため、最後の手段として使用するようにしています。(ただし、かなりうまく機能することに同意します)
代わりに、いくつかの Applescript ハンドラを使用しました。私たちのニーズはポスターのニーズとは異なるため、通常、これらは以下のような同じスクリプトには含まれていません。コードを取得したい人の便宜のために、それらをスクリプトに入れただけです。ファイル アップロード シートを呼び出すツールを使用して、ターミナルから次のようにコードを実行します。
osascript /Path/To/The/Saved/Script.scpt /Path/To/MyUploadFile.txt Firefox を開く
ご覧のとおり、3 つのパラメーターが必要です。アップロードするファイルへのパス、ブラウザの名前、およびファイル アップロード シートでクリックするボタン。もちろん、必要に応じてこれらの値をハードコーディングすることもできます。実際、ときどき [キャンセル] をクリックする必要があったため、そのようになりました。
on run argv
if count of argv is not equal to 3 then
log "You must pass 3 arguments to this script. The path to the file to upload, the browser name and finally the button to click."
quit
end if
set theFileToUploadPath to item 1 of argv
set theBrowserName to item 2 of argv
set theButtonToClick to item 3 of argv
goToFolder(theFileToUploadPath)
delay 1
clickFileUploadButton(theBrowserName, theButtonToClick)
end run
on goToFolder(folderPath)
tell application "System Events"
keystroke "g" using {command down, shift down}
delay 1
keystroke folderPath
delay 1
key code 76
end tell
end goToFolder
on clickFileUploadButton(browserName, buttonToClick)
tell application "System Events"
try
tell process browserName
activate
if buttonToClick is equal to "Cancel" then
click button "Cancel" of window "File Upload"
else if buttonToClick is equal to "Open" then
click button "Open" of window "File Upload"
else
log "Incorrect button passed to handler"
end if
end tell
on error
log "Unable to close File Upload window for browser: " & browserName
end try
end tell
end clickFileUploadButton
これがいつか誰かに役立つことを願っています。