Суть кода: Добавить в массив праздники с сайта BambooHR. Праздники находятся в таблицах. Изначально показываются праздники 2024 года. Чтобы перейти к другим праздникам нужно нажать на локатор (href=“?year=2025”). Идет цикл, который пробегается по первой талице и записывает данные праздника в массив. Условно в первой таблице - 5 строк, а во второй - 2 строки. Код пройдет сначала по 5-ти строчкам, после перехода на другую таблицу он все равно идет по 5 строчкам, хотя должен идти по двум.
Локаторы этих таблиц одинаковы (class=“fab-Table fab-Table–hoverable js-HolidaySettings__table”).
Вот мой код
const holi = [];
const years = [ 2023, 2022, 2021]; // Adjust years as needed
for (const year of years) {
await page.waitForSelector('table tbody tr', { state: 'visible' });
let holidayRows = await page.locator('table tbody tr').all();
for (let i = 0; i < holidayRows.length; i++) {
console.log(holidayRows.length);
const row = holidayRows[i];
const holidayNameCell = await row.locator('td:first-child a').first();
const holidayLink = await holidayNameCell.getAttribute('href');
await holidayNameCell.click();
const nameInput = await page.locator('#mui-1');
const dateInput = await page.getByPlaceholder('mm/dd/yyyy');
const name = await nameInput.getAttribute('value');
const date = await dateInput.getAttribute('value');
let location;
if ((await page.$('//*[@id="filter-description"]/div/span')) !== null) {
location = await page.locator('//*[@id="filter-description"]/div/span').textContent();
} else {
location = "All";
}
holi.push({ name, date, location });
await page.getByRole('button', { name: 'Save' }).first().click();
await page.waitForSelector('tbody tr', { state: 'visible' });
}
await page.locator(`[href="?year=${year}"]`).click();
await page.waitForSelector('tbody tr', { state: 'visible' });
console.log(holi);
console.log("YEEEES");
}
});