Проблема, кажется, связана с классом ui-btn-up-undefined
, он не будет работать с типичными селекторами - я предполагаю, что это как-то связано с неопределенным присутствием в имени. Ниже работает для получения текста из всех элементов, которые имеют те же классы, которые похожи. Я не был уверен, какой именно вы хотели, но принцип тот же. У меня есть длинный waitFor
, который вы можете удалить, сократить или оптимизировать.
const puppeteer = require("puppeteer");
(async () => {
var browser = await puppeteer.launch({
headless: false,
args: ["--no-sandbox", "--disable-setuid-sandbox"]
});
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 800 });
try {
await page.goto("https://vorlesungsplan.dhbw-mannheim.de/");
await page.waitFor(500);
await page.waitForSelector(
"body > div.ui-page.ui-body-a.ui-page-active > div.ui-content > div > div:nth-child(14) > div > a"
);
await page.click(
"body > div.ui-page.ui-body-a.ui-page-active > div.ui-content > div > div:nth-child(14) > div > a"
);
await page.waitFor(500);
await page.waitForSelector(
"body > div.ui-page.ui-body-a.ui-page-active > div.ui-content > div > div.ui-block-c > div > a:nth-child(9)"
);
await page.click(
"body > div.ui-page.ui-body-a.ui-page-active > div.ui-content > div > div.ui-block-c > div > a:nth-child(9)"
);
await page.waitFor(500);
// added below
await page.waitForSelector(
".ui-li.ui-li-divider.ui-btn.ui-bar-b.ui-corner-top"
);
await page.waitFor(4000);
const element = await page.$$(
".ui-li.ui-li-divider.ui-btn.ui-bar-b.ui-corner-top"
);
const arr = await Promise.all(
element.map(async (i, elem) => {
const hello = await (await i.getProperty("textContent")).jsonValue();
return hello;
})
);
console.log(arr);
} catch (error) {
console.log(error);
} finally {
browser.close();
}
})();