Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Automating a javascript button click

So I have a button with code like this:

<div style="text-indent: 0pt; visibility: inherit;" id="button5061">
    <a title="Continue" href="javascript:if(%20button5061.hasOnUp%20)%20button5061.onUp()" name="button5061anc">
        <img width="82" height="25" border="0" style="cursor: pointer;" alt="Continue" src="images/continueoff.gif" name="button5061Img">
    </a>
</div>

And I need to click it with javascript. Right now I am using the firefox extension Chickenfoot which allows me to script the site with a javascript interpreter with some custom commands.

http://groups.csail.mit.edu/uid/chickenfoot/api.html

I have tried selecting it with xPath (//div/a[@title='Continue']/..) which finds it, but when I click() it nothing happens. Here are some of the things I have tried:

click(find(new XPath("//img[@alt='Continue']/..")))
click(find(new XPath("//img[@alt='Continue']/../..")))
click("continue")
click("Continue")
click("images/continueoff.gif")
click("continueoff.gif")
click(find("Continue"))
click(find("Continue").element)
click(find("images/continueoff.gif"))

I know this is a rather specific quesiton but any ideas on what to try would be much appreciated.

like image 312
madmod Avatar asked Dec 06 '22 22:12

madmod


2 Answers

html:

<div>
    <a href="#" onclick="alert('ok')">
        <img src="">
    </a>
</div>

javascript:

var xPathRes = document.evaluate ('//div[1]/a[1]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
xPathRes.singleNodeValue.click();

jsfiddle:

https://jsfiddle.net/7fm89aqd/

like image 175
Matt Sephton Avatar answered Dec 26 '22 05:12

Matt Sephton


If you're trying to simulate a user clicking on it:

You can simulate a click like this: document.getElementById('theSubmitButton').click();

Here's an example for ya: http://jsfiddle.net/gasWZ/1/

If that's not what you're trying to do, could you explain a bit more?

like image 43
penguinrob Avatar answered Dec 26 '22 07:12

penguinrob