如何解决如何从现有的任何网站读取点击事件?
对任何错误表示歉意,我对 node.js 完全陌生。我正在尝试从现有网站获取按钮单击事件。例如,如果我点击 www.xyz.com 网站中的登录按钮,我需要在我的终端中点击该事件和打印按钮。我尝试了 puppeteer、cheerio 和 axios,所有这些都可以选择自动点击但不能读取点击事件。有人可以帮我解决这个问题,或者建议我另一种可能的方法来完成它。
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch({headless:false});
const page = await browser.newPage();
await page.goto('https://stackoverflow.com/questions/68126167/how-to-read-a-click-event-from-any-current-existing-website/68126333#68126333',{waitUntil: 'networkidle0'});
const element = window.document.getElementById("upvoteBtn")
element.onclick = function() {
console.log("Upvoted!")
}
})();
Getting this error for the above code
解决方法
使用 puppeteer,您有 2 个不同的作用域:Node.js 作用域和浏览器作用域。一个作用域中的变量不在另一个作用域中定义。以下是在这些范围之间进行通信并实现目标的一种方式:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch({ headless: false,defaultViewport: null });
try {
const [page] = await browser.pages();
await page.goto('https://example.org/');
await page.exposeFunction('logClickedElement',(name) => {
console.log(`Clicked element: ${name}.`);
});
await page.evaluate(() => {
document.body.addEventListener('click',(event) => {
window.logClickedElement(event.target.tagName);
});
});
} catch (err) { console.error(err); }
,
如果您知道按钮的 ID,您可以获得该元素,然后为它的 onclick 属性分配一个函数。尽管这可能会覆盖现有功能。
假设赞成按钮的 ID 为 upvoteBtn
(您可以在元素面板中指定)。
const element = window.document.getElementById("upvoteBtn")
element.onclick = function() {
console.log("Upvoted!")
}
在 SO 的情况下,按钮保留其预期功能并打印到控制台。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。