Получить список всех созданных переменных, отладка

Запросы функционала
  • А как обернуть скрипт в отладчик? в вижуал студию чтоли?
    fidler telerik?

  • @volley Скрипт нужно просто выполнить, что значит обернуть в отладчик?

    Вы не про эту кнопку спрашиваете?

    0_1508584068652_ListVariables.png

  • @support а можете добавить исключения?
    Не добавлять некоторые переменные. К примеру переменные с base64 json объекты и тд..

  • @mansory333 said in Получить список всех созданных переменных, отладка:

    @support а можете добавить исключения?
    Не добавлять некоторые переменные. К примеру переменные с base64 json объекты и тд..

    дак код же в открытом виде, добавляйте условия какие угодно

  • @Fox Кое как сделал, js знаю плохо

    var iskl = ["SCREENSHOT_BASE64","DATA_JSON","SAVED_PAGE_HTML"]
    
    var AllVariablesTable = Object.keys(this)
    .filter(function(e){return e.indexOf("VAR_") == 0})
    .reduce(function(all,one){
            try
            {
                
               if(iskl.indexOf(one.slice(4)) == -1 ){
                all[one.slice(4)] = eval(one)
               }
               
    
                
                
            }catch(e)
            {
                all[one.slice(4)] = "undefined"
               
            }
            
            return all;
        
    },{})
    
    var gg = JSON.stringify(AllVariablesTable) 
    

    Но не могу понять как его в список сохранять в тхт

    Результат

    {"CYCLE_INDEX":0,"FOREACH_DATA":"","FOR_EACH_CSS":">NOTDEFINED>","FOR_EACH_MATCH":">NOTDEFINED>","FOR_EACH_XPATH":">NOTDEFINED>","WAS_ERROR":false,"LAST_ERROR":"","ERROR_ID":0,"NEW_LIST":"","TIME":1608411092,"HEX":["#CADABA"],"THREAD_INDEX":1}
    

    Не знаю за что зацепится. переменные разделены запятыми, В саблайме можно через запятые сделать каждую переменную с новой строки, но если в значении есть "," то все ломается.

    Не подскажешь как сделать?

    upd
    Посмотрел хорошенько на результат. Что то очень похож на json)
    Короче перевел его в json объект

    Спасибо за помощь))

  • @Fox Помоги пожалуйста, код выше не работает в режиме Запуска
    Тестовый скрипт
    test3.xml

  • @mansory333 said in Получить список всех созданных переменных, отладка:

    @Fox Помоги пожалуйста, код выше не работает в режиме Запуска
    Тестовый скрипт
    test3.xml

    Переменные BAS объявляются без приставки var

    9f493edc-9dac-46ed-a70b-a1decbba3a06-изображение.png

    Скорее всего данный метод устарел в принципе, попробуйте выполнить код:

    var AllVariablesTable = Object.keys(this)
    log(JSON.stringify(AllVariablesTable))
    

    aac10226-fd9c-4283-8989-832cabb347a4-изображение.png

  • @Fox Проверил, в режиме запуска работает.
    Тот код проверил, без "var" не работает.
    Ошибок нет, в логе только пустые фигурные скобки.

    alt text

  • @mansory333 said in Получить список всех созданных переменных, отладка:

    @Fox Проверил, в режиме запуска работает.

    И что именно этот "рабочий" код выдал в лог?

  • @mansory333 said in Получить список всех созданных переменных, отладка:

    @Fox alt text

    Ну, я этот же скриншот и приложил в своём сообщении:

    fd0ae068-f982-48ec-953f-21afd05040ed-изображение.png

    Присмотритесь, где в значении этого кода названия ваших переменных?

  • @Fox Там нет моих переменных..
    И в логе массив, а там был объект

    Это в режиме Запуска нет моих переменных, а в режиме Запись есть

    И как же их получить в режиме запуска?

  • @mansory333 said in Получить список всех созданных переменных, отладка:

    @Fox Там нет моих переменных..
    И в логе массив, а там был объект

    А вы загуглите метод Object.keys()

    Это в режиме Запуска нет моих переменных, а в режиме Запись есть
    И как же их получить в режиме запуска?

    Я же об этом и говорю, скорее всего ни как

  • @Fox

    А вы загуглите метод Object.keys()

    Загуглил, но не понятно как его связать с режимом Запуск.. Ну да ладно, решил пойти по другой дороге.

    Запускать этот код по завершении скрипта

    var AllVariablesTable = Object.keys(this)
    
    [[GG]] = JSON.parse(JSON.stringify(AllVariablesTable))
    
    var iskl = ["SCREENSHOT_BASE64","DATA_JSON","SAVED_PAGE_HTML","CYCLE_INDEX"]
    var perem = []
    
    **тут кубик foreach**
    
    one = [[FOREACH_DATA]]
    
    if(one.substr(0, 4) === "VAR_" && iskl.indexOf(one.substr(4)) == -1){
        log(iskl.indexOf(one.substr(4)) == -1)
        perem.push(one)
        
    }
    
    

    В итоге имеем массив с переменными вида VAR_NEW_VARIABLE
    При втором запуске скрипта и появлении ошибки читаем тхт с переменными и ...
    Я остановился тут. Надо как то создать объект из каждого элемента массива.
    Проблема в том, что не могу добавить в объект
    obj.VAR_NEW_VARIABLE = eval(VAR_NEW_VARIABLE)

    Простите за мой гвно код)

    obj.perem = eval(perem[i])
    Вот так значение переменной правильное, а вот ключ как изменить

  • @mansory333 said in Получить список всех созданных переменных, отладка:

    @Fox

    А вы загуглите метод Object.keys()

    Загуглил, но не понятно как его связать с режимом Запуск.. Ну да ладно, решил пойти по другой дороге.

    Вы спросили почему этот код возвратил массив, а не объект, я ответил почему

    Запускать этот код по завершении скрипта

    var AllVariablesTable = Object.keys(this)
    
    [[GG]] = JSON.parse(JSON.stringify(AllVariablesTable))
    
    var iskl = ["SCREENSHOT_BASE64","DATA_JSON","SAVED_PAGE_HTML","CYCLE_INDEX"]
    var perem = []
    
    **тут кубик foreach**
    
    one = [[FOREACH_DATA]]
    
    if(one.substr(0, 4) === "VAR_" && iskl.indexOf(one.substr(4)) == -1){
        log(iskl.indexOf(one.substr(4)) == -1)
        perem.push(one)
        
    }
    
    

    В итоге имеем массив с переменными вида VAR_NEW_VARIABLE
    При втором запуске скрипта и появлении ошибки читаем тхт с переменными и ...
    Я остановился тут. Надо как то создать объект из каждого элемента массива.
    Проблема в том, что не могу добавить в объект
    obj.VAR_NEW_VARIABLE = eval(VAR_NEW_VARIABLE)

    Простите за мой гвно код)

    obj.perem = eval(perem[i])
    Вот так значение переменной правильное, а вот ключ как изменить

    Вы меня тролите чтоли? Я говорю, что в окружении "this" сейчас нет локальных переменных BAS'a, что в режиме "запуск" не получить от них данные, раз их нет в окружении!

  • @Fox Я вас не понимаю.
    К примеру есть у меня тхт файл и в нем строка VAR_NEW_VARIABLE
    Разве я не могу читать файл в середине скрипта.
    Получить значение переменной в данный момент
    var error = [VAR_NEW_VARIABLE] = eval(VAR_NEW_VARIABLE)
    И записать переменную error в папку error для отладки.
    Так как баги не всегда в режиме Записи появляются

  • @mansory333 said in Получить список всех созданных переменных, отладка:

    @Fox Я вас не понимаю.
    К примеру есть у меня тхт файл и в нем строка VAR_NEW_VARIABLE
    Разве я не могу читать файл в середине скрипта.
    Получить значение переменной в данный момент
    var error = [VAR_NEW_VARIABLE] = eval(VAR_NEW_VARIABLE)
    И записать переменную error в папку error для отладки.
    Так как баги не всегда в режиме Записи появляются

    Получить значение вы можете, но вот получить список всех переменных нет. Если вы хотите знать в определённый момент времени значение определённых переменных, то это делается элементарно через eval()

  • @Fox said in Получить список всех созданных переменных, отладка:

    знать в определённый момент времени значение определённых переменных

    да, хочу знать.
    Не подскажите как через eval() сделать?

  • @mansory333 said in Получить список всех созданных переменных, отладка:

    @Fox said in Получить список всех созданных переменных, отладка:

    знать в определённый момент времени значение определённых переменных

    да, хочу знать.
    Не подскажите как через eval() сделать?

    var q = eval(VAR_NEW_VARIABLE)
    log(q)
    
  • @Fox ну так тоже самое
    var error = [VAR_NEW_VARIABLE] = eval(VAR_NEW_VARIABLE)

    Короче в режиме записи не получится получить значение всех переменных, только если есть заранее подготовленный файл с переменными.

    Спасибо большое за помощь)