Ok, I managed to get automator to do what I wanted, with a little help from grep ;)
I did it with a 'workflow' and a "files and folders" in "finder" service. The service calls the workflow with each of the selected file names.
Here's what the service does:
Run Shell Script with Pass input to stdin and the script grep -o '[^/]*$' -- the service receives the full paths of the files selected in the finder, I only want the file names, so this removes the path bit.
Launch Application with firefox -- this seems to be the best way to switch applications (even if they're already open..)
Run Workflow - in batches of 1 at a time using 1 workflow, with "wait for workflow to finish" ticked.
The in batches mode appears to process text input line by line. Each line output by grep contains a file name, so the second workflow is called once with each file name. Note that the list of file names is passed through Launch Application.
Here's what the workflow does:
Copy to Clipboard
- a recorded
Watch Me Do:
- a series of clicks to get the 'upload file' dialog up
- a click to focus it's search box,\
- paste (the file name)
- select the top found file
- click 'open'
- a series of clicks to upload the file and return the page to the same state in which we started
There were a few hiccups along the way.
- First I used
command-V to paste, but for some reason that was unreliable, so I ended up using paste from the edit menu instead.
- I had to be careful to leave enough time between clicks for worst-case rendering of html pages and opening dialogs etc..
- When the flow crashed (usually by getting out of sync with the browser), I often ended up with the browser stuck with the 'upload file' dialog open and unresponsive. To get it responsive again, I found that moving it sufficed (ie: dragging it's title bar a bit).