This commit is contained in:
Matthias Hochmeister
2026-03-16 16:14:25 +01:00
parent 57ab1e8b25
commit 75cf07f402

View File

@@ -241,9 +241,9 @@ export async function scrapeAll(username: string, password: string, knownStNrs:
const idPersonen = urlObj.searchParams.get('id_personen'); const idPersonen = urlObj.searchParams.get('id_personen');
const idInstanzen = urlObj.searchParams.get('id_instanzen') ?? ID_INSTANZEN; const idInstanzen = urlObj.searchParams.get('id_instanzen') ?? ID_INSTANZEN;
// Ausbildungen // Ausbildungen — disabled: requires different page/approach (TODO)
const quals = await scrapeAusbildungenFromDetailPage(mainFrame, member, idMitgliedschaft, idPersonen); // const quals = await scrapeAusbildungenFromDetailPage(mainFrame, member, idMitgliedschaft, idPersonen);
ausbildungen.push(...quals); // ausbildungen.push(...quals);
// Beförderungen // Beförderungen
const befos = (idMitgliedschaft && idPersonen) const befos = (idMitgliedschaft && idPersonen)
@@ -281,6 +281,20 @@ async function frame_goto(frame: Frame, url: string): Promise<void> {
await frame.goto(url, { waitUntil: 'networkidle' }); await frame.goto(url, { waitUntil: 'networkidle' });
} }
/** Select "Alle" in the anzeige_count dropdown to show all rows, then wait for reload. */
async function selectAlleAnzeige(frame: Frame): Promise<void> {
try {
const sel = frame.locator('select[name="anzeige_count"], select#anzeige_count');
if (await sel.count() === 0) return;
const current = await sel.inputValue().catch(() => '');
if (current === 'ALLE') return; // already showing all
await sel.selectOption('ALLE');
await frame.waitForLoadState('networkidle').catch(() => {});
} catch {
// Dropdown may not exist on all pages — that's OK
}
}
async function login(page: Page, username: string, password: string): Promise<void> { async function login(page: Page, username: string, password: string): Promise<void> {
log(`Navigating to ${LOGIN_URL}`); log(`Navigating to ${LOGIN_URL}`);
await page.goto(LOGIN_URL, { waitUntil: 'domcontentloaded' }); await page.goto(LOGIN_URL, { waitUntil: 'domcontentloaded' });
@@ -890,6 +904,10 @@ async function navigateAndGetTableRows(
return null; return null;
} }
// Show all rows (default is 10)
await selectAlleAnzeige(frame);
}
// Log all table classes on the page for diagnostics (first time only) // Log all table classes on the page for diagnostics (first time only)
const tableInfo = await frame.evaluate(() => { const tableInfo = await frame.evaluate(() => {
return Array.from(document.querySelectorAll('table')).map((t, i) => { return Array.from(document.querySelectorAll('table')).map((t, i) => {
@@ -1078,6 +1096,9 @@ async function scrapeMemberFahrgenehmigungen(
return []; return [];
} }
// Show all rows (default is 10)
await selectAlleAnzeige(frame);
// Dump HTML for diagnostics // Dump HTML for diagnostics
await dumpHtml(frame, `fahrgenehmigungen_StNr${standesbuchNr}`); await dumpHtml(frame, `fahrgenehmigungen_StNr${standesbuchNr}`);