update
This commit is contained in:
@@ -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}`);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user