/* TEST MODUS open chrome in debug modus start chrome --remote-debugging-port=9222 --user-data-dir="C:\ChromeDebug" navigeer naar het dashboard en roep de lijst met startpakket studenten op die relevant zijn voor de test start dan het script */ const puppeteer = require("puppeteer"); const isStartPakketAvailable = require("./evaluateStartPakket"); async function iterateOverDashboardTable() { /*connection to local host */ const browser = await puppeteer.connect({ browserURL: 'http://localhost:9222', // Connect to the browser's debugging address }); // Get all open pages (tabs) const pages = await browser.pages(); console.log(`Found ${pages.length} open pages on the browser.`); // Interact with the last tab (or any tab of choice) let page = pages[pages.length - 1]; // Choose the last opened tab console.log('Current URL:', page.url()); // Select the table body by ID const iframeElement = await page.waitForSelector('iframe[title="Hoofdinhoud"]'); const iframe = await iframeElement.contentFrame(); if (!iframe) { console.log('Iframe on dasbhoard inschrijvingen page not found!'); return; } // Select the table body within the iframe const tableBodySelector = '#QQ_RPT_OIS_TEMP\\$scroll\\$0 tbody'; // Check if the table exists inside the iframe const tableExists = await iframe.$(tableBodySelector); if (!tableExists) { console.log('Table not found inside iframe!'); return; } console.log('Table dashboard found inside iframe!'); // Get all rows within the table body const links = await iframe.$$(`${tableBodySelector} tr span[title="AA-rapport"] a`); console.log(`Found ${links.length} AA-links to process.`); for (let i = 0; i < links.length; i++) { console.log(`Processing link ${i + 1}`); const iframeElement = await page.waitForSelector('iframe[title="Hoofdinhoud"]'); const iframe = await iframeElement.contentFrame(); const links = await iframe.$$(`${tableBodySelector} tr span[title="AA-rapport"] a`); const [newPagePromise] = await Promise.all([ new Promise((resolve) => browser.once('targetcreated', async (target) => { const newPage = await target.page(); resolve(newPage); }) ), links[i].click(), // Simulate the click ]); const newPage = await newPagePromise; try { const evaluationResult = await isStartPakketAvailable(newPage); if (evaluationResult) { console.log(`Evaluation succeeded for link ${i + 1}`); } else { console.log(`Evaluation failed for link ${i + 1}`); } } catch (error) { console.error(`Error processing link ${i + 1}:`, error.message); } await newPage.close(); } console.log('All links processed.'); } module.exports = iterateOverDashboardTable();