It's possible from an AppleScript, here's a sample script (tested on Sierra and Xcode Version 8.3.3):
tell application "Xcode"
tell active workspace document to if exists then
repeat until (loaded) -- Whether the workspace document has finished loading after being opened
delay 1
end repeat
run -- Invoke the "run" scheme action
end if
end tell
To run on a specific device: I don't have devices to test, but I use the simulator, try this script:
tell application "Xcode"
tell active workspace document to if exists then
repeat until (loaded) -- Whether the workspace document has finished loading after being opened
delay 1
end repeat
--**** run on a specific device ****
set active run destination to run destination "iPad Pro (12.9 inch)" -- *** change it to the name of your device ***
set schAction to run -- Invoke the "run" scheme action
repeat while (get status of schAction) is in {not yet started, running} -- exit the loop when the status is (cancelled, failed, error occurred or succeeded), so I press the stop button in Xcode, or I delete the application in the simulator or I quit the simulator.
delay 3
end repeat
--**** run on another specific device ****
set active run destination to run destination "iPhone 7" -- *** change it to the name of your device ***
run
end if
end tell