javascript - 如何使用 xpath 自动单击链接
问题描述
我正在寻找一种在页面加载时自动单击按钮或链接的方法。目前,Xpath 方法对我来说似乎是一个不错的选择。我试过的是,
document.evaluate('/html/body/div/div[4]/div[2]/form/p/input', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click();
我正在尝试在ezgif 网站上自动单击此按钮。我也尝试使用按钮的 X 和 Y 坐标单击,但它也不起作用。我知道我做错了什么,因为我几乎没有编码经验。有人可以让我朝着正确的方向前进。
解决方案
如果你检查你的值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);
推荐阅读
- oracle - 在 Oracle Forms 中抑制警告
- mongodb - 具有年龄范围的MongoDB聚合
- c# - 如何根据 wpf 中的键将静态字典值绑定到文本框
- c# - Visual Studio 2015 远程调试不兼容平台错误
- python - Matplotlib:如何增加刻度线之间的空间(或减少刻度线的数量)?
- android - 安卓:UI设计
- bash - Bash 脚本 - 将源脚本的输出传递给变量
- ios - Crashlytics 设备状态仅在 iOS 上的后台
- google-cloud-dataflow - Google Cloud Pub/Sub to BigQuery 模板主题订阅
- c# - 无法验证 DataGridView 中的单元格