Using Javascript | Applescript to click button in Safari

Solution 1:

For a minute there I thought you were asking the same question again as last time.

But realise now you want to know how to use Inspect Element to construct your own code.

In the example you give: document.forms[WHATGOESHERE?].click()

The WHATGOESHERE would be the form name.

i.e document.forms['theFormName'].click()

Your website in their wisdom has named the form 'form'

<form method="post" action="/cgi-bin/RNAfold.cgi" enctype="multipart/form-data" name="form"> <input type="hidden" name="PAGE" value="2">

i.e document.forms['form'].click()

But this would not click the input button

You can use the submit() function dot syntax'd on the end :

document.forms['form'].submit()

Safari Applescript : do JavaScript "document.forms['form'].submit()"


Also

In the code I provided you in your last question. I used:

tell document 1

        do JavaScript "document.getElementsByClassName('proceed')[0].click()"

    end tell

This uses the class Name proceed of the forms input element seen here: class="proceed"

<input value="" name="proceed" type="submit" class="proceed" onmouseover="this.style.cursor=&quot;pointer&quot;" style="cursor: pointer;">

The getElementsByClassName('proceed')[0] does exactly what it says.

It gets the Elements By ClassName 'proceed'.

The [0] means it will give you the first element in it's results from the Array that would be returned. The array is counted from 0-9. So the first item would be item 0.


A good place to get working examples and information about Javascript is at www.w3schools.com On the front page the have links to their HTML and Javascript examples and Tutorials. The elements of the HTML Dom and Javascript functions are listed for easy access.

Solution 2:

Despite the fact that this website has shitty code (too few IDs), something like :

tell application "Safari"
    activate
    open location "http://rna.tbi.univie.ac.at/cgi-bin/RNAfold.cgi"
    delay 3
    do JavaScript "document.forms['form'].submit()" in current tab of window 1
end tell

should work.

It looks for the last element of the first form in the page.


Just so you know :

document.forms['search']['order_list_search_batch'].click()

This line does following :

  • It looks in the webpage
  • For a form with id="search"
  • Within that form, it looks for a child node with id=order_list_search_batch.
  • Once this object is found, it performs a click on it.