Skip to content
Dmitry Kochin edited this page Oct 21, 2021 · 23 revisions

Введение

Пошаговый отладчик провайдеров представляет собой расширение Google Chrome, которое симулирует среду выполнения провайдера в AnyBalance. Симуляция, однако, не полная, поэтому если провайдер работает в отладчике, то его необходимо проверить и непосредственно в приложении AnyBalance.

Установка

Установка уже не такая простая, как была раньше, но если сделать всё по шагам, то результат получается изумительный.

1. Chrome

Отладчик работает только в Chrome до версии 77. Рекомендуется установить portable версию Chrome 77 (64-bit, Windows) отсюда. Её следует запускать со следующими параметрами коммандной строки --disable-features=BypassCorbOnlyForExtensionsAllowlist --enable-features=NetworkService --incognito. Подробности здесь.

2. Сам отладчик

В установленном на предыдущем шаге Chrome установите установите из магазина Google Chrome расширение. После установки выполните следующие шаги.

  1. В Chrome перейдите по ссылке chrome://extensions.
  2. Для расширения AnyBalanceDebugger установите флаги: * Разрешить использование в режиме инкогнито * Разрешить открывать файлы по ссылкам

3. AnyBalanceDevtools

Чтобы отладчик самостоятельно подтягивал зависимости провайдера, рекомендуется установить AnyBalanceDevtools.

4. Fiddler

В Google Chrome есть Ошибка, приводящая к невозможности выполнения отладчиком запроса (NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'url'), если в процессе выполнения происходят перенаправления на другой домен или протокол. Для того, чтобы обойти эту ошибку, можно использовать Fiddler, Расширение AnyBalanceFiddlerExtension для Fiddler (нужно установить в %userprofile%\Documents\Fiddler2\Scripts\) и в отладчике поставить галочку Enable 3xx replace.

Настройка

  1. Для отладки необходимо сформировать специальный локальный html-файл, в котором определены необходимые для работы провайдера настройки. Файл обязательно должен иметь имя, заканчивающееся на -anybalance.html, например, _debug-anybalance.html. Расширение AnyBalanceDebugger работает только с такими файлами. Такой файл можно сформировать в текущем каталоге провайдера с помощью AnyBalanceDevtools: abd bootstrap

  2. Открываем созданный _debug-anybalance.html в Chrome 77 с отладчиком в режиме инкогнито. Если вы не забыли поставить галочки в шаге установки 2.2, то отладчик должен загрузиться и показать вкладки Debugger и Properties.

  3. Рекомендуется создать ассоциацию с *-anybalance.html файлами, чтобы они автоматически открывались именно в Chrome 77 в режиме инкогнито (chrome --incognito --disable-features=BypassCorbOnlyForExtensionsAllowlist --enable-features=NetworkService)

  4. Переходим в Properties и устанавливаем галочки Enable 3xx replace, Clear all cookies before executing providers, Prefer "source" version over "build/head". А также прописываем default путь к модулям any-balance-providers (путь к гит репозиторию + modules). Например, C:\SrcRep\any-balance-providers\modules

  5. Запускаем abd serve, чтобы отладчик мог автоматически загружать зависимости провайдера

  6. Обновляем страницу с отладчиком - всё готово к отладке

Передача параметров в провайдер

Передача логина, пароля или других параметров, необходимых для работы провайдера, осуществляется через файл _debug-anybalance.html. Комментарии показывают, в каких местах следует сделать изменения.

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script>
	var g_api_preferences = {
            //Вставьте сюда настройки, необходимые для вашего провайдера
            //Все настройки должны быть описаны в файле preferences.xml
            //Например:
            login: 'username',
            password: 'secretpass'
	};
  </script>
  <!-- Если у вас запущен локальный abd serve (рекомендуется), 
       то указывать список файлов со скриптами, от которых зависит провайдер, здесь не нужно.
       Вместо этого необходимо указать список модулей и файлов в манифесте. 
       Отладчик автоматически загрузит все js файлы согласно описанию блоков <depends> и <files> из файла манифеста!

       Если вы предпочитаете способ отладки без локального сервера, перечислите все скрипты, 
       указанные в манифесте вашего провайдера. Указывайте относительные пути к файлам (относительно debug-anybalance.html!).
       Библиотека JQuery уже включена, отдельно указывать её не нужно.
       Если в манифесте есть блок <depends>, то для каждого модуля необходимо использовать следующий шаблон:
           <script src="../../modules/{id_модуля}/build/{id_версии}/{id_модуля}.min.js"></script>
       Если в манифесте есть блок <files>, то для каждого js файла необходимо использовать следующий шаблон:
           <script src="{название_файла}"></script>
       Проверьте, чтобы все указанные файлы были загружены!
       Для этого в Chrome DevTools посмотрите на вывод консоли или на вкладку "Сеть". Ошибок быть не должно.
       Примеры:
           <script src="../../modules/library/build/head/library.min.js"></script>
           <script src="../../modules/framework/gwt/build/head/gwt.min.js"></script>
           <script src="main.js"></script>
  -->
</head>
</html>

Пошаговая отладка

Пошаговая отладка делается с помощью встроенного в Google Chrome отладчика JavaScript. Консоль JavaScript может быть вызвана комбинацией клавиш в Windows: CTRL-SHIFT-J, на Mac: ALT-⌘-J . Или в меню Инструменты / Консоль JavaScript. Можно устанавливать точки останова (кликнув на номер нужной строки в окне просмотра JavaScript файла).

Особенности среды выполнения отладчика

Отладчик работает только в Chrome до версии 77. Рекомендуется установить portable версию Chrome 77 (64-bit, Windows) отсюда. Её следует запускать со следующими параметрами коммандной строки --disable-features=BypassCorbOnlyForExtensionsAllowlist --enable-features=NetworkService --incognito. Подробности здесь.

В Google Chrome есть Ошибка, приводящая к невозможности выполнения отладчиком запроса (NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'url'), если в процессе выполнения происходят перенаправления на другой домен или протокол. Для того, чтобы обойти эту ошибку, можно использовать Fiddler, Расширение AnyBalanceFiddlerExtension для Fiddler (нужно установить в %userprofile%\Documents\Fiddler2\Scripts\) и в отладчике поставить галочку Enable 3xx replace.

Куки и авторизация сохраняются между последовательными запросами к AnyBalance.requestGet и AnyBalance.requestPost также, как и в AnyBalance. Но более того, куки сохраняются и между несколькими вызовами отладчика. Это может влиять на процедуру логина и навигации по сайту провайдера. Поэтому можете открыть новое окно Инкогнито и выполнить провайдер там - инкогнито открывается чистым, как будто вы ни разу не заходили до этого на сайт. Но будьте внимательны, все открытые окна Инкогнито Google Chrome разделяют куки между собой. Они очистятся только после закрытия всех окон Инкогнито и открытия одного заново.