Безверхий (04.02), (А1065) Бурковцов (11.03), (А1065) Колодченко (14.03), (відправлено запит 28.03) Янц (14.03), (27.03-дзвінок) Давиденко (16.03), (А1065) Сомок (18.03), (27.03-дзвінок) Шупик (19.03), (27.03-дзвінок) Явтушенко (20.03), (відправлено запит 28.03) Садика (20.03), (27.03-дзвінок) Коваленко (20.03), (А1065) Кривогуз (25.03), (відправлено запит 26.03) Бродовський (25.03), (відправлено запит 26.03) Косенюк (25.03), (27.03-дзвінок) Косьмін (26.03), (27.03-дзвінок) Русняк (27.03), (відправлено запит 28.03) Скандаков (27.03), (відправлено запит 28.03) Шевчук (27.03), (А1065) id="kc-registration" id="firstName" id="lastName" id="sex" data-value="Чоловіча" css-p5lk8m data-testid="assignment_1c84c53c-f61c-4d39-945f-9702dbbb2956" data-testid="assignment_d39b596c-3391-4a4e-a815-791f0a8f1d5e" data-testid="assignment_f9b5e636-e22c-4f7d-a900-309cf174b095" data-testid="assignment_ddd83b9b-030c-4f4a-b647-76cf2cdb3fdd" data-testid="assignment_f9f662ba-c8e0-460b-943c-c14fbe55c702" Есть сайт с 5ю тестами. нужно пройти за 140 человек. авторизовываться я должен лично. после перехода на сайт нажать ентер и запустить скрипт. скрипт ищет первую ссылку после хеадер и кликает. первый тест: ищет и нажимет первую кнопку баттон и начинает тест. варианты ответов в первых 7ми лейблах. нужно нажимать рандомно со второго по 6 включительно. После нажатия на 10 ответов нажать первый баттон после лейблов. второй тест: снова переход по первой ссылке, нажатие на кнопку, затем есть два лейбла которые рандомно нужно нажимать и так 40 вопросов потом снова нажимаем баттон. третий тест: тотже алгоритм только 5 вариантов ответа нажимаем рандомно и 24 вопроса. затем также на баттон. четтый тест: это тест на айкю. алгоритм такойже но я дам варианты которые нужно нажимать и на некоторых вопросах нужно будет рандомно выбирать из 2х или 3х вариантов. 60 вопросов. по порядку от 1 до 60 вопроса в скобочкам рандомные варианты. варианты ответов: 4,5,1,2,6,3,6,2,1,3,(5,4),2,5,6,1,2,1,3,5,5,4,3,4,2,5,3,2,7,8,4,5,1,7,1,6,(3,4,7),3,4,3,8,(7,5),6,8,7,(3,6),2,(2,8),(7,8),(7,3),(6,4),(8,2),(3,6),(2,7),(6,3),(4,3),4,8,(1,3),(7,2),(3,4) пятий тест: тотже алгоритм только 10 вопросов. и такие ответы: 1,1,2,1,1,2,1,1,2,1. затем также на баттон. уведомление что тесты пройдены и ждать по новой входа в новый акк. паузы перед каждым ответом и перед каждым кликом. как понял задачу? (async function() { function sleep(ms) { return new Promise(r => setTimeout(r, ms)); } function rand(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function pick(arr) { return arr[Math.floor(Math.random() * arr.length)]; } async function clickWithPause(el) { await sleep(rand(1500, 3000)); el.click(); await sleep(rand(800, 1500)); } async function goToFirstTest() { await sleep(rand(2000, 3500)); const header = document.querySelector('header'); let firstLink = null; if (header) { let el = header.nextElementSibling; while (el) { const a = el.querySelector('a') || (el.tagName === 'A' ? el : null); if (a) { firstLink = a; break; } el = el.nextElementSibling; } } if (!firstLink) firstLink = document.querySelector('a'); await clickWithPause(firstLink); await sleep(rand(2000, 4000)); } async function clickStartButton() { const btns = document.querySelectorAll('button'); await clickWithPause(btns[1]); await sleep(rand(2000, 3500)); } async function clickSubmitAfterLabels() { const labels = document.querySelectorAll('label'); const buttons = document.querySelectorAll('button'); let submitBtn = null; for (let btn of buttons) { let afterLabel = false; for (let lbl of labels) { if (btn.compareDocumentPosition(lbl) & Node.DOCUMENT_POSITION_PRECEDING) { afterLabel = true; } } if (afterLabel) { submitBtn = btn; break; } } if (!submitBtn) submitBtn = buttons[buttons.length - 1]; await clickWithPause(submitBtn); await sleep(rand(2000, 4000)); } async function test1() { console.log('▶ Тест 1'); await goToFirstTest(); await clickStartButton(); for (let i = 0; i < 10; i++) { await sleep(rand(2000, 4000)); const labels = document.querySelectorAll('label'); await clickWithPause(labels[rand(1, 5)]); } await clickSubmitAfterLabels(); console.log('✅ Тест 1 завершён'); } async function test2() { console.log('▶ Тест 2'); await goToFirstTest(); await clickStartButton(); for (let i = 0; i < 40; i++) { await sleep(rand(2000, 4000)); const labels = document.querySelectorAll('label'); await clickWithPause(labels[rand(0, 1)]); } await clickSubmitAfterLabels(); console.log('✅ Тест 2 завершён'); } async function test3() { console.log('▶ Тест 3'); await goToFirstTest(); await clickStartButton(); for (let i = 0; i < 24; i++) { await sleep(rand(2000, 4000)); const labels = document.querySelectorAll('label'); await clickWithPause(labels[rand(0, 4)]); } await clickSubmitAfterLabels(); console.log('✅ Тест 3 завершён'); } async function test4() { console.log('▶ Тест 4 (IQ)'); const answers = [ 4,5,1,2,6,3,6,2,1,3,[5,4],2,5,6,1,2,1,3,5,5, 4,3,4,2,5,3,2,7,8,4,5,1,7,1,6,[3,4,7],3,4,3,8, [7,5],6,8,7,[3,6],2,[2,8],[7,8],[7,3],[6,4],[8,2], [3,6],[2,7],[6,3],[4,3],4,8,[1,3],[7,2],[3,4] ]; await goToFirstTest(); await clickStartButton(); for (let i = 0; i < answers.length; i++) { const delay = rand(5000, 20000); console.log(`⏳ Вопрос ${i + 1}: ожидание ${(delay/1000).toFixed(1)}с...`); await sleep(delay); const labels = document.querySelectorAll('label'); let ans = answers[i]; if (Array.isArray(ans)) ans = pick(ans); await clickWithPause(labels[ans - 1]); } await clickSubmitAfterLabels(); console.log('✅ Тест 4 завершён'); } async function test5() { console.log('▶ Тест 5'); const answers = [1,1,2,1,1,2,1,1,2,1]; await goToFirstTest(); await clickStartButton(); for (let i = 0; i < answers.length; i++) { await sleep(rand(2000, 4000)); const labels = document.querySelectorAll('label'); await clickWithPause(labels[answers[i] - 1]); } await clickSubmitAfterLabels(); console.log('✅ Тест 5 завершён'); } console.log('🚀 Старт...'); await test1(); await test2(); await test3(); await test4(); await test5(); console.log('🎉 Все тесты пройдены! Входите в следующий аккаунт.'); })(); https://tc199.pryzma.mod.gov.ua/?groupid=bd898372-4d27-454f-a6fb-35027586449f