如何使用XPath自动单击链接

时间:2019-01-01 07:52:53

标签: javascript jquery button xpath click

我正在寻找一种在页面加载时自动单击按钮或链接的方法。目前,Xpath方法对我来说似乎是一个不错的选择。我尝试过的是

document.evaluate('/html/body/div/div[4]/div[2]/form/p/input', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click();

我正在尝试自动单击ezgif site上的此按钮。我也尝试过使用按钮的X和Y坐标单击,但是它也不起作用。我知道我做错了,因为我几乎没有编码经验。有人可以让我朝正确的方向前进。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

如果检查singleNodeValue的值,您会发现它为 null 。这是因为您的XPath错误。

正确的完整XPath是:/html/body/div[2]/div[4]/div[2]/form/fieldset/p[4]/input

但是,这条路径将来很有可能会中断,因为它依赖于<div><p>位于特定位置。您可以创建一个更加“轻松”的XPath,该XPath仍然可以找到正确的元素。实际上,您可以在Google Chrome浏览器中轻松执行此操作,方法是右键单击按钮,单击“检查”,然后右键单击DOM元素并选择“复制Xpath”。

结果代码为:

document.evaluate('//*[@id="tool-submit-button"]/input', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click();

如果要在页面加载时使用它,则应首先检查视频是否已转换。您可能还需要等待按钮加载:

var checkTimer = setInterval(function() {
    var button = document.evaluate('//*[@id="tool-submit-button"]/input', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
    if (button) {
        clearInterval(checkTimer);

        // Only convert if the gif hasn't already been converted
        if (!document.getElementsByTagName("video")[0])
            button.click();
    }
}, 50);