autosckhoolFAST2

Упрощает прохождения тестов и внутреннего экзамена по ПДД

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         autosckhoolFAST2
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Упрощает прохождения тестов и внутреннего экзамена по ПДД
// @author       iku
// @match        https://education.auto-online.ru/my/trainings/*
// @icon         https://www.google.com/s2/favicons?domain=auto-online.ru
// @grant        none
// ==/UserScript==

let interval
let botint
let answers = []
let questions = []
let values = []
let turnoff

let a_correct_index
let correct_answer
let correct_value
let correct_question
let result_search

//https://coderoad.ru/14964035/%D0%9A%D0%B0%D0%BA-%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8E-%D0%BE-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%B5-JavaScript-%D0%B2-csv-%D0%BD%D0%B0-%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%B5-%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%B0

button_start()
function button_start() {
    let wzNode = document.createElement ('div');
    wzNode.innerHTML = '<button id="wtm1_SearchBttn" type="button">Старт</button>';
    wzNode.setAttribute ('id', 'wtm1_btnContainer');
    wzNode.style.cssText = `cursor: pointer; position: fixed; top: 120px; left: 0px; font-size: 12.8px; border: 1.5px outset black; opacity: 0.9; z-index: 1100; padding: 0px; display: grid; grid-template-columns: 1fr;`
    document.body.appendChild (wzNode);
    let w1 = document.getElementById ("wtm1_SearchBttn");
    w1.addEventListener ("click", start);

    let ab = wzNode.insertAdjacentHTML('beforeend','<button id="wtm2_SearchBttn" type="button"> Стоп </button>');
    let w2 = document.getElementById ("wtm2_SearchBttn");
    w2.addEventListener ("click", end);

    let ab1 = wzNode.insertAdjacentHTML('beforeend','<button id="wtm3_SearchBttn" type="button"> Бот вкл </button>');
    let w3 = document.getElementById ("wtm3_SearchBttn");
    w3.addEventListener ("click", bot_start);

    let ab2 = wzNode.insertAdjacentHTML('beforeend','<button id="wtm4_SearchBttn" type="button"> Бот выкл </button>');
    let w4 = document.getElementById ("wtm4_SearchBttn");
    w4.addEventListener ("click", bot_stop);
}

function bot_stop() {
    turnoff = 0
}

function bot_start() {
    turnoff = 1
    bot()
}

function start() {
    //interval = setInterval(repeat,2500)
    new_sam()
}

function end() {
    clearInterval(interval)
}


function err() {
    document.querySelector('#modal-error > div > div.links > a').click()
}

function new_sam() {
    let check_correct = false
    let a = document.querySelectorAll('.answer')
    let length = document.querySelectorAll('.answer').length
    for (let i =0 ; i <length; i++) {
        document.querySelector(`#answer_${i}`).addEventListener('click',answer_and_next)
    }
    result_search = false
    console.log('new_sam')
    readcorrect()


    function readcorrect() {
        let question = document.querySelector('#test-content > div.qu').textContent
        let q_correct = localStorage.getItem('questions', questions);
        let a_correct = localStorage.getItem('answers', answers);
        let v_correct = localStorage.getItem('values', 'answer_'+values);
        q_correct = q_correct.split('%,')
        a_correct = a_correct.split('%,')
        v_correct = v_correct.split('%,')

        q_correct.forEach(searchIndexCorrectanswerInQuestion)
        console.log(q_correct.length+'new_sam11')

        function searchIndexCorrectanswerInQuestion(element, index, array) {
            //console.log('new_sam111')
            if (element == question && check_correct == false) {
                console.log('new_sam1')
                a_correct_index = index
                //console.log('First IF ' +a_correct_index)
                correct_question = element
                //console.log('q_correct '+element, index)
                a_correct.forEach(searchCorrectInAnswer)
                function searchCorrectInAnswer(element, index, array) {
                    if (a_correct_index == index) {
                        console.log('new_sam12')
                        sverka_correct_answer()
                        function sverka_correct_answer() {
                            for (let i =0 ; i <length; i++) {

                                if (a[i].outerText.slice(2) == element) {
                                    console.log('new_sam123')
                                    correct_answer = element
                                    a_correct_index = index
                                    //console.log('Second IF ' +a_correct_index)
                                    v_correct.forEach(searchCorrectInValue)
                                }
                            }
                            //console.log('a_correct '+element, index)
                        }
                    }


                    function searchCorrectInValue(element, index, array) {
                        if (a_correct_index == index) {
                            //for (let i =0 ; i <length; i++) {
                            //console.log(a[i].firstElementChild.value+ ' '+ element + ' '+ a_correct_index + ' ' + index)
                            //if (a[i].firstElementChild.value == element && a_correct_index == index) {result_search = false; console.log('Некорректный ответ');return}
                            //}
                            correct_value = element
                             console.log(`Лог: Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index} Длина ${length}`)
                             try {
                                    if (document.querySelector(`#answer_${correct_value}`).parentElement.outerText.slice(2) !== correct_answer) {console.log('Некорректный ответ'); }
                                    else {console.log(`Корректный ответ: Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index} Длина ${length}`);
                                          correct_value = element; result_search = true;
                                          check_correct = true
                                          cvet()
                                          return
                                         }
                                    //correct_value = element
                                    //console.log('v_correct '+element, index)
                                    //result_search = true
                                    //return
                                }
                                catch (e) {
                                    correct_value = element
                                     console.log(`${e} catch: Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index} Длина ${length}`)
                                    //alert('catch')
                                    //setTimeout(alert('catch'), 20500)
                                    result_search = 'fromcatch'
document.querySelector(`#answer_${correct_value}`).parentElement.style.color = "red"

                                }


                            //console.log(document.querySelector(`#answer_${element}`).parentElement.outerText.slice(2) + ' AAA ' + a_correct[index] +' AAA '+ element )
                            //if (document.querySelector(`#answer_${element}`).parentElement.outerText.slice(2) !== a_correct[index]) {alert('Некорректный ответ')}
                            //correct_value = element
                            //console.log('v_correct '+element, index)
                            //result_search = true
                            //cvet()
                            //return

                        }
                    }
                    //result_search = true
                    //return
                }
            }
        }
    }


    function cvet() {
        if (result_search) {
            document.querySelector(`#answer_${correct_value}`).parentElement.style.color = "blue"
            //console.log(`check_on_correct_correct Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index}`)
        }
    }


    function answer_and_next() {
        document.querySelector('#test-content > form > div.bottom.links > span.link.l.bg-green.answer-link > input[type=submit]').click()
        sverka()
        /*
    setTimeout(continue1, 500)
    function continue1() {
        document.querySelector('#test-content > form > div.bottom.links > span.link.l.bg-red.answer-link > input[type=submit]').click()
        setTimeout(repeat, 500)
    }
    */
    }

    function sverka() {
        console.log(result_search)
        if (result_search) {
            //document.querySelector('#test-content > form > div.bottom.links > span.link.l.bg-green.answer-link > input[type=submit]').click() //Жму ответить
            //console.log(`Найден корректный ответ: Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index}`)
            //Жму продолжить
            setTimeout(check_on_correct, 350)
            //check_on_correct()
            function check_on_correct() {
                for (let i =0 ; i <length; i++) {
                    if (a[i].outerText.slice(2).includes('Верный')) {
                        document.querySelector(`#answer_${correct_value}`).parentElement.style.color = "blue"
                        console.log(`check_on_correct_correct Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index}`)
                        document.querySelector('section#test-content span.link.l.bg-red.answer-link > input[type=\"submit\"]').click()
                        setTimeout(new_sam, 700)
                    }
                    if (a[i].outerText.slice(2).includes('Неверный')) {
                        document.querySelector(`#answer_${correct_value}`).parentElement.style.color = "red"
                        console.log(`check_on_correct_НЕВЕРНЫЙ Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index}`)
                        //document.querySelector('#modal-error > div > div.links > a').click() //Жму продолжить
                        //setTimeout(bot, 1200)
                        // Если неверный имеет смысл выполнить проверку ридкоррект еще раз!? 1118 280621
                    }
                }
            }

            //setTimeout(bot, 1400)
        }
        else {
            //document.querySelector(`#answer_${correct_value}`).parentElement.style.color = "blue"
            //document.querySelector('#test-content > form > div.bottom.links > span.link.l.bg-green.answer-link > input[type=submit]').click()
            //console.log(`Рандомный ответ: #answer_${rand} ${result_search}`)
            //write_correct_for_new_sam = false
            setTimeout(write_correct, 700) //1000
        }
    }

    function write_correct() {
        console.log('write_correct')

        let a = document.querySelectorAll('.answer')
        let length = document.querySelectorAll('.answer').length
        for (let i =0 ; i <length; i++) {
            //console.log(i)
            if (a[i].outerText.slice(2).includes('Верный')) {
                console.log('write_correct')
                let answer = a[i].outerText.slice(2,-13)
                let question = document.querySelector('#test-content > div.qu').textContent
                let value = a[i].firstElementChild.value

                localStorage.setItem('questions', localStorage.getItem('questions') + question+'%,')
                localStorage.setItem('answers', localStorage.getItem('answers') + answer+'%,')
                localStorage.setItem('values', localStorage.getItem('values') + value+'%,')

                document.querySelector('section#test-content span.link.l.bg-red.answer-link > input[type=\"submit\"]').click() //Жму продолжить
                setTimeout(new_sam, 1400)
            }

            if (a[i].outerText.slice(2).includes('Неверный')) {
                console.log('Неверный')
                document.querySelector('#modal-error > div > div.links > a').click() //Жму продолжить
                setTimeout(new_sam, 1400)
            }
        }
    }


}



function bot() {
    if (turnoff == 1) {
        let check_correct = false
        let a = document.querySelectorAll('.answer')
        let length = document.querySelectorAll('.answer').length
        let rand = Math.floor(Math.random() * (length)) //  ИЛИ Math.floor(Math.random() * (3 - 1) + 1) от 1до 2 (исправил тк правильные ответы только 1 или 2)
        result_search = false

        click()
        function click() {
            readcorrect()
            //setTimeout(readcorrect, 400)
console.log(result_search)
            //if (result_search == 'fromcatch') {console.log('fromcatch'); turnoff = 0; return}
            if (result_search || result_search == 'fromcatch') {
                console.log(correct_value+'AAAAA')
                //console.log(`Найден корректный ответ: Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index}`)
                //if (document.querySelector(`#answer_${correct_value}`).parentElement.outerText.slice(2) !== correct_answer) {console.log('Некорректный ответ'); alert('awd')}
                document.querySelector(`#answer_${correct_value}`).click()
                document.querySelector('#test-content > form > div.bottom.links > span.link.l.bg-green.answer-link > input[type=submit]').click() //Жму ответить
                console.log(`Найден корректный ответ: Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index}`)
                //Жму продолжить
                setTimeout(check_on_correct, 500)
                //check_on_correct()
                function check_on_correct() {
                    //console.log(result_search+'AAAA1')
                    for (let i =0 ; i <length; i++) {
                        if (a[i].outerText.slice(2).includes('Верный')) {
                            //console.log(result_search+'AAAA2')
                            console.log(`check_on_correct_correct Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index}`)
                            document.querySelector('section#test-content span.link.l.bg-red.answer-link > input[type=\"submit\"]').click()
                        }
                        if (a[i].outerText.slice(2).includes('Неверный')) {
                            //console.log(result_search+'AAAA3')
                            console.log(`check_on_correct_НЕВЕРНЫЙ Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index}`)
                            document.querySelector('#modal-error > div > div.links > a').click() //Жму продолжить
                            //setTimeout(bot, 1200)
                        }
                    }
                }

                setTimeout(bot, 700) //1400
            }
            else {
                document.querySelector(`#answer_${rand}`).click()
                document.querySelector('#test-content > form > div.bottom.links > span.link.l.bg-green.answer-link > input[type=submit]').click()
                console.log(`Рандомный ответ: #answer_${rand} ${result_search}`)
                setTimeout(write_correct, 700) //1400
            }

        }

        function write_correct() {
            //console.log('write_correct')

            let a = document.querySelectorAll('.answer')
            let length = document.querySelectorAll('.answer').length
            for (let i =0 ; i <length; i++) {
                //console.log(i)
                if (a[i].outerText.slice(2).includes('Верный')) {
                    console.log('write_correct')
                    let answer = a[i].outerText.slice(2,-13)
                    let question = document.querySelector('#test-content > div.qu').textContent
                    let value = a[i].firstElementChild.value

                    localStorage.setItem('questions', localStorage.getItem('questions') + question+'%,')
                    localStorage.setItem('answers', localStorage.getItem('answers') + answer+'%,')
                    localStorage.setItem('values', localStorage.getItem('values') + value+'%,')

                    document.querySelector('section#test-content span.link.l.bg-red.answer-link > input[type=\"submit\"]').click() //Жму продолжить
                    setTimeout(bot, 1000)
                }

                if (a[i].outerText.slice(2).includes('Неверный')) {
                    console.log('Неверный')
                    document.querySelector('#modal-error > div > div.links > a').click() //Жму продолжить
                    setTimeout(bot, 1000)
                }
            }
        }

        function readcorrect() {

            let question = document.querySelector('#test-content > div.qu').textContent
            let q_correct = localStorage.getItem('questions', questions);
            let a_correct = localStorage.getItem('answers', answers);
            let v_correct = localStorage.getItem('values', 'answer_'+values);
            q_correct = q_correct.split('%,')
            a_correct = a_correct.split('%,')
            v_correct = v_correct.split('%,')

            q_correct.forEach(searchIndexCorrectanswerInQuestion)

            function searchIndexCorrectanswerInQuestion(element, index, array) {
                if (element == question && check_correct == false) {
                    a_correct_index = index
                    console.log('First IF ' +a_correct_index)
                    correct_question = element
                    //console.log('q_correct '+element, index)
                    a_correct.forEach(searchCorrectInAnswer)
                    function searchCorrectInAnswer(element, index, array) {
                        if (a_correct_index == index) {
                            sverka_correct_answer()
                            function sverka_correct_answer() {
                                for (let i =0 ; i <length; i++) {

                                    if (a[i].outerText.slice(2) == element) {
                                        correct_answer = element
                                        a_correct_index = index
                                        console.log('Second IF ' +a_correct_index)
                                        v_correct.forEach(searchCorrectInValue)
                                    }
                                }
                                //console.log('a_correct '+element, index)
                            }
                        }


                        function searchCorrectInValue(element, index, array) {
                            if (a_correct_index == index) {
                                correct_value = element
                                console.log(`Лог: Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index} Длина ${length}`)
                                try {
                                    if (document.querySelector(`#answer_${correct_value}`).parentElement.outerText.slice(2) !== correct_answer) {console.log('Некорректный ответ'); }
                                    else {console.log(`Корректный ответ: Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index} Длина ${length}`);
                                          correct_value = element; result_search = true;
                                          check_correct = true
                                          return
                                         }
                                    //correct_value = element
                                    //console.log('v_correct '+element, index)
                                    //result_search = true
                                    //return
                                }
                                catch (e) {
                                     console.log(`${e} catch: Вопрос: ${correct_question} Ответ: ${correct_answer} Тэг: ${correct_value} Индекс: ${a_correct_index} Длина ${length}`)
                                    //alert('catch')
                                    //setTimeout(alert('catch'), 20500)
                                    result_search = 'fromcatch'


                                }
                            }
                        }

                        //result_search = true
                        //return
                    }
            }




        }
        }
    }
}