自动化JavaScript按钮点击

6

所以我有一个按钮,代码如下:

<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>

我需要使用JavaScript单击它。目前我正在使用Firefox扩展程序Chickenfoot,它允许我使用JavaScript解释器和一些自定义命令来编写网站脚本。

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

我尝试使用xPath选择它(//div/a[@title='Continue']/..),可以找到它,但是当我点击时没有任何反应。 以下是我尝试过的一些方法:

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"))

我知道这是一个相当具体的问题,但如果有什么建议可以尝试的话,将不胜感激。

3个回答

14

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/


4
如果您想模拟用户点击它:
您可以像这样模拟点击:document.getElementById('theSubmitButton').click(); 这是一个示例:http://jsfiddle.net/gasWZ/1/ 如果您不是这样做的,请您再详细解释一下。

不幸的是,在我要自动化的页面是自动生成的情况下,按钮的ID会发生变化。如果有一种方法可以通过标题或图像的alt标签选择按钮,那么这可能有效,但我无法找到任何getElementByAttribute或类似的方法来实现这一点。 - madmod
嗯,我不确定你该怎么做。这个按钮是否有一些固定的属性? - penguinrob
<div style="text-indent: 0pt; visibility: inherit;" id="button____"> <a title="继续" href="javascript:if(%20button____.hasOnUp%20)%20button____.onUp()" name="button____anc"> <img width="82" height="25" border="0" style="cursor: pointer;" alt="继续" src="images/continueoff.gif" name="button____Img"> </a> </div> 我用下划线替换了变化的部分。我尝试使用我的按钮代码在您的jsfiddle文档中选择它,但没有任何反应。 - madmod
哇,那是一个很长的<a>标签。 :-) 对于a>name属性,下划线中会是什么?数字、字母等等。 - penguinrob
尝试在您的jQuery选择器中使用正则表达式来选择a,然后单击它:https://dev59.com/PnVC5IYBdhLWcg3wxEJ1 - penguinrob

2

将锚点对象传递到函数并评估名称属性,这不是很有效吗?

  1. 将href属性设置为#
  2. 调用函数并传递obj

<div style="text-indent: 0pt; visibility: inherit;" id="button____"> <a title="Continue" href="#" name="button____anc"> <img width="82" height="25" border="0" style="cursor: pointer;" alt="Continue" src="images/continueoff.gif" name="button____Img"> </a> </div>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接