Почему событие щелчка по привязке не запускается при нажатии вручную в сеансе отладки из VS Code?
В общем вот моя цель:
- Перейдите на linkedin.com, используя Puppeteer в headful Chrome.
- Авторизоваться
- Перейдите на сайт linkedin.com/jobs.
- Прикрепите обработчик кликов для всех ссылок на странице.
- Приостановите выполнение node.js после присоединения обработчиков событий
- Щелкните ссылки вручную с помощью мыши, чтобы увидеть этот новый обработчик событий в действии.
В коде это то, что я получил
const puppeteer = require('puppeteer')
async function main() {
const browser = await puppeteer.launch({ headless: false })
const page = await browser.newPage();
await page.goto('https://www.linkedin.com/');
await login(page);
await page.goto('https://www.linkedin.com/jobs/');
await attachLinks(page);
await page.screenshot({ path: "bla" })
browser.close();
};
async function attachLinks(page) {
const bodyHandle = await page.$('body');
await page.evaluate( (body, numLinks=3) => {
let anchors = Array.from( body.querySelectorAll("a") ).
filter( (e, i) => i < numLinks );
for(let i = 0; i < anchors.length; i++) {
let a = anchors[i];
console.log(`Binding for ${a.href}`);
// This event does not trigger!!!!!
a.addEventListener("click", e => {
console.log("some one clicked the link");
e.preventDefault();
e.stopPropagation();
return false;
});
};
}, bodyHandle);
await bodyHandle.dispose();
}
main();
Затем, используя VS Code и поддержку отладки node.js, я поставил точку останова в строке await page.screenshot({ path: "bla" })
после прикрепления события onclick
для тегов <a>
. В открывшемся браузере (поскольку для безголового установлено значение false), пока код ожидает возобновления, я щелкнул мышью теги <a>
в <body>
, ожидая увидеть «кто-то щелкнул ссылку» в головокружительной отладке Chrome. консоль браузера. Но я не вижу журналов ни в браузере, ни в консоли отладки VS Code. Я что-то упустил здесь?
attachLinks
добавляет к ним обработчик событий onClick. Я также дважды проверил консоль отладки VS Code. Там тоже ничего. - person Nitin   schedule 18.06.2018