Refactor evaluateStartPakket.js and iterateOverDashboardTable.js

This commit is contained in:
bdaneels
2024-11-22 14:47:09 +01:00
parent a554020123
commit b92f1c8c29
2 changed files with 104 additions and 96 deletions

View File

@@ -8,83 +8,86 @@ 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
});
/*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.`);
// 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());
// 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();
// Select the table body by ID
const iframeElement = await page.waitForSelector('iframe[title="Hoofdinhoud"]');
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();
if (!iframe) {
console.log('Iframe on dasbhoard inschrijvingen page not found!');
return;
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.isCollapsed) {
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);
}
// 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.');
await newPage.close();
}
console.log("All links processed.");
}
module.exports = iterateOverDashboardTable();
module.exports = iterateOverDashboardTable();