【问题标题】:How to auto click a link with xpath如何使用 xpath 自动单击链接
【发布时间】:2019-01-01 07:52:52
【问题描述】:

我正在寻找一种在页面加载时自动单击按钮或链接的方法。目前,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 坐标单击,但它也不起作用。我知道我做错了什么,因为我几乎没有编码经验。有人可以让我朝着正确的方向前进。

【问题讨论】:

标签: javascript jquery button xpath click


【解决方案1】:

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

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

但是,这条路径在未来很可能会中断,因为它依赖于<div>s 和<p>s 定位到特定位置。您可以制作一个更“宽松”的 XPath,它仍然可以找到正确的元素。事实上,您可以在 Google Chrome 中轻松做到这一点,只需右键单击该按钮,单击 Inspect,然后右键单击 DOM 元素并选择 Copy 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);

【讨论】:

  • 你测试了吗?因为不知何故它不适合我。 (根本没有自动点击)
  • 它有效。我添加了一个 GIF,显示我在 Chrome 控制台中编写它并单击按钮(然后抱怨我没有选择文件)。你是如何执行代码行的?
  • 我正在使用 Firefox 的代码注入器扩展。你能指点我一些更好的选择吗?
  • 它也适用于带有代码注入器的 Firefox。添加了它的屏幕截图。除了执行那行代码之外,您还必须做其他事情?
  • 我现在添加了一些等待按钮出现的代码,然后检查视频是否已经转换,如果没有,然后单击按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 2012-07-23
  • 2012-11-28
  • 2012-06-22
  • 2020-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多