MutationObserver не работает для значка счетчика непрочитанных сообщений Linkedin - PullRequest
1 голос
/ 26 мая 2020

Я пытаюсь создать автоматизацию для своей учетной записи Linkedin, чтобы всякий раз, когда я получаю сообщение, я хотел сделать с ним что-то особенное.

Я использую Puppeteer и MutationObserver внутри вызова page.evaluate после загрузки моего профиля в Linkedin с моим сеансом li_at cook ie.

Но он не запускает событие, даже когда я вижу, что узел изменяет textContent.

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch({ devtools: true, headless: false });
    const page = await browser.newPage();

    await page.setBypassCSP(true);
    await page.setDefaultNavigationTimeout(0); 
    await page.setCookie({
        'name': 'li_at',
        'value': 'putYourSessionCookieHere',
        'domain': '.www.linkedin.com'
    })
    await page.goto('https://www.linkedin.com', {waitUntil: 'networkidle2'});

    await page.exposeFunction('puppeteerMutationListener', puppeteerMutationListener);

    await page.evaluate(() => {
        const target = document.querySelector('#messaging-nav-item .nav-item__badge-count');
            const observer = new MutationObserver((mutationsList) => {
                for (const mutation of mutationsList) {
                window.puppeteerMutationListener(
                    mutation.removedNodes[0].textContent,
                    mutation.addedNodes[0].textContent,
                );
            }
        });
        observer.observe(
            target,
            { childList: true},
        );
    });

    } catch (err) {
        console.error(err);
    }
})();

function puppeteerMutationListener(oldValue, newValue) {
    console.log(`${oldValue} -> ${newValue}`);
}

Чтобы воспроизвести проблему, вам потребуется:

  1. Учетная запись Linkedin
  2. Полезный коллега с учетной записью linkedin, готовый отправлять вам сообщения ИЛИ вы можете самостоятельно изменить textContent узла

Есть идеи, почему это может происходить?

...