90 lines
3.0 KiB
JavaScript
90 lines
3.0 KiB
JavaScript
|
/* 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();
|