Я создаю программу для очистки ответов форума для онлайн Uni, на котором я работаю. Мне удалось успешно перейти на соответствующие страницы, но когда я попытался включить очистку для списка имен учеников, которые ответили, я получаю «Ошибка выполнения контекста была уничтожена».
До сих пор я пытался перемещаться по методам page.waitFor () с различным количеством тайм-аутов.
const nameLinkList = await page.$$eval(
'.coursename',
(courseLinks => courseLinks.map(link => {
const a = link.querySelector('.coursename > a');
return {
name: a.innerText,
link: a.href
};
}))
);
for (const {
name,
link
} of nameLinkList) {
await Promise.all([
page.waitForNavigation(),
page.goto(link),
page.waitFor(2000),
]);
let [button] = await page.$x("//a[contains(., 'Self')]");
if (button) {
await button.click();
} else {
console.log(name);
console.log('Didnt find link');
}
fs.appendFile('out.csv', name + '\n');
await page.waitFor(1000);
var elementExists = await page.$$('.author .media-body');
if (elementExists) {
await console.log(name);
await page.waitFor(500);
for (let z of elementExists) {
const studentName = await z.$eval('a', a => a.innerText);
await page.waitFor(2000)
await console.log(studentName);
}
}
await page.goto('www.urlwiththelistofcourses.com');
}
Я ожидал, что он будет перебирать каждую страницу, записывая сначала название курса, а затем имена всех студентов, которые разместили на курсах конкретный форум. Меня смущает то, что в отличие от предыдущих ошибок, которые застряли на определенной итерации, эта переменная, обычно в той же области, вокруг 12-17-й итерации, иногда даже раньше.