JavaScript run by AppleScript to click button and fill text in Safari

applescriptjavascriptsafari

I’m not managing to execute JavaScript in Safari anymore.

I have this working script for Chrome.

set caseID to "11111"
end tell


####################################### time #########
set myDate to date string of (current date)


set myTime to time string of (current date)

set myDateTime to myDate & " - " & myTime


set textToSave to "MY TEXT HERE
HERE
HERE
" & myDateTime

tell application "Google Chrome"
    delay 0.1
    execute front window's active tab javascript "document.getElementsByName('9.9.5.4.5.CSInfoInspector.1.1.1')[0].click();"
    delay 0.1
    execute front window's active tab javascript "document.getElementsByName('05.5.54.5.CSInfoInspector.1.1.5.41.3.7.57.1')[0].value=" & quoted form of textToSave 
    delay 0.1
    execute front window's active tab javascript "document.getElementsByName('5.5.4.5.5.CSInspector.5.1.7')[0].value=" & quoted form of caseID

end tell

I converted to Safari here:

set caseID to "11111"

####################################### time #########
set myDate to date string of (current date)


set myTime to time string of (current date)

set myDateTime to myDate & " - " & myTime


set textToSave to "MY TEXT HERE
HERE
HERE
" & myDateTime

tell application "Safari"
    delay 0.1
    do JavaScript "document.getElementsByName('9.9.5.4.5.CSInfoInspector.1.1.1')[0].click();" in current tab of window 1
    delay 0.1

    do JavaScript "document.getElementsByName('05.5.54.5.CSInfoInspector.1.1.5.41.3.7.57.1')[0].value=" & quoted form of textToSave in current tab of window 1

    do JavaScript "document.getElementsByName('5.5.4.5.5.CSInspector.5.1.7')[0].value=" & quoted form of caseID in current tab of window 1

end tell

The result do return on AppleScript but Safari actually take no action
Result:
"11111"

Basically the script is suppose to click on a button to have a pop windows and fill up the text
What am I doing wrong?

My system:
OS X 10.13.2 (17C202)
Safari Version 11.0.2 (13604.4.7.1.5)

Best Answer

So unlike Chrome where you can just adding few line with different JS code, in safari you have to added for each code do JavaScript and mention the document / tab

e.g :

tell application "Safari"
    delay 0.1
    do JavaScript "document.getElementById('accountEnabledSelection').value=1" in current tab of window 1
    do JavaScript "document.getElementsByName('demo')[0].click();" in current tab of window 1


end tell