Задать вопрос

Почему puppeteer пишет, что node detached?

Здравствуйте.
Тестирую сайт с Puppeteer + Jest, и есть проблема. Когда получаю список нод и прохожу по ним в цикле, пытаюсь кликнуть по каждой ноде (это радиобатоны), но Puppeteer говорит, что "node is detached from document". Сама нода 100% есть, потому что если просто получать ее textContent, это работает.
// Такой корявый селектор - увы, необходимое зло из-за корявого сайта
const paymentMethods = await method.$$('.form__radio-list:nth-child(4) li[ng-repeat="payment in delivery.payments"]');

for(const pIndex in paymentMethods) {
     const paymentMethod = paymentMethods[pIndex];
    
    await paymentMethod.click(); // <-- не будет работать, node is detached

    // Будет работать, выведет название метода оплаты
    const paymentMethodTitleHandler = await paymentMethod.$('.radio .highlightable');
    const paymentMethodTitle = await page.evaluate(item => item.textContent, paymentMethodTitleHandler);
}

Не могу понять, в чем проблема. Puppeteer берет эти ноды в кэш, и при послдующих попытках интерактивности выбрасывает эту ошибку, но дает взять данные? Или в чем суть? Как решить проблему?

Заранее спасибо.
  • Вопрос задан
  • 612 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Interface
Сама нода 100% есть, потому что если просто получать ее textContent, это работает.

Это ошибочный вывод. textContent вполне работает с "виртуальной" нодой:
const node = document.createElement('div');
node.textContent = 'hello';
console.log(node.textContent)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы