javascript - 使用 waitForKeyElements 依次单击两个按钮,一旦页面正确加载
问题描述
我目前正在尝试找出一种方法来自动单击我认为是 AJAX 驱动网站的页面上的按钮。我正在通过 Tampermonkey (Javascript Userscript) 执行此操作。
现在,以下脚本在控制台中运行,并通过 HTML/CSS 元素单击页面上的目标按钮:
document.querySelector('li[data-v-29761082].list-item').click();
然后我使用以下脚本(也可以在页面上的控制台中使用)单击下一个按钮(在按下第一个按钮后出现):
document.querySelector('button.el-button.button.el-button--primary.el-button--xl').click();
所以这两行代码都在控制台中工作,但我需要将它们集成到一个脚本中,该脚本通过 Tampermonkey 在页面中自动运行。不幸的是,当在 Tampermonkey 中使用时,什么也没有发生,并且按钮不点击。我认为这是因为它是一个基于 AJAX 的站点。
我相信 waitForKeyElements 函数将有助于在页面正确加载后执行代码。
我希望这两个单独的代码行串联使用(一个接一个),但是两者都必须等待并要求它们的元素首先加载并在页面上,然后再执行并继续下一个选择(第二个一行代码)。
我之前使用过 waitForKeyElements 函数,但我无法为这个特定脚本找到正确的方法和语法:
const findAndClickParent = text => [...document.querySelectorAll('label > span')].forEach(e => e.textContent === "Yes" ? e.parentElement.click(): null);
waitForKeyElements (
"label",
() => {
findAndClickParent("Yes");
}
);
所以需要找一个类似的waitForKeyElements方法在Tampermonkey里面和页面上正确执行上面两行代码。现在,我在获取正确的语法并能够一个接一个地正确执行代码时遇到了一些麻烦。任何和所有的建议将不胜感激。
解决方案
推荐阅读
- node.js - NodeJS - 在服务器端为外部 API 存储访问令牌的最佳实践
- flutter - 如何使用 Flutter 在 Slack 频道中发送消息?
- c# - 无法使用带有标识字段的 EF Core 3.0 将 NULL 插入 SQL 数据库
- .net - .net winforms 在顶部对话框中显示表单
- python - os.system() 中的引号匹配
- git - .gitignore 只跟踪目录中任意深度的一个文件
- flask - 代码未更改时文件上传时出现意外的 500 内部服务器错误
- json - 从外部 json 值获取更新而不刷新整页
- python - 如何将 Django 默认页面更改为您的设计?
- java - 如何处理flutter Java/Kotlin