Перейти к основному содержимому Главная страница каталога дополнений для NVDA от русскоязычного сообщества NVDA.RU.

Официальный русскоязычный каталог дополнений NVDA

Крупнейший каталог дополнений для программы экранного доступа NVDA, доступный в Интернете

Каталог дополнений от «🇷🇺 Русскоязычного сообщества NVDA.RU.»

NvdaDevTestToolbox (Набор инструментов для разработки и тестирования NVDA)

Автор:

Краткое описание

Дополнение NvdaDevTestToolbox добавляет набор инструментов для разработчиков и тестировщиков NVDA.
Особенности:
Улучшенный диалог перезагрузки для указания дополнительных параметров при перезапуске NVDA.
Различные функции, связанные с залогированными ошибками.
Исследователь свойств объектов.
Инструменты для работы со скриптами: расширенный режим описания скриптов и открыватель скриптов.
Команды для удобного чтения и анализа логов.
Резервные копии старых логов.
В рабочей области Python-консоли - функция для открытия исходного кода объекта.
Пользовательский стартовый скрипт для Python-консоли.
Команда для логирования трассировки стека функции speech.speak.
Команда для обратного перевода элементов интерфейса.
Подробнее о каждой функции и сочетаниях клавиш вы можете прочитать в руководстве к дополнению.

⬇ Перейти к подробной справке 🔝 Назад к оглавлению

Основная информация

Название Версия Совместимость с API NVDA Последняя протестированная версия NVDA Минимальная версия NVDA Дата загрузки в каталог Размер Лицензия
nvdaDevTestToolbox 9.0 2025.1 2025.3.2 2019.2 08-02-2026 17:29:49 316 Кб. GPL v2
🔝 Назад к оглавлению

Журнал изменений

Подробнее
🔝 Назад к оглавлению

Скачать

NvdaDevTestToolbox-V.9.0.nvda-addon

⬇ Перейти к истории версий 🔝 Назад к оглавлению

Информация о локализации на русский язык

🔝 Назад к оглавлению

Разделы

🔝 Назад к оглавлению

Справка

Подробнее

NVDA Dev & Test Toolbox (Набор инструментов для разработки и тестирования NVDA)

Это дополнение собирает различные функции для отладки и тестирования NVDA.

Возможности

Команды

Это дополнение использует многоуровневые команды для всех новых команд, которые оно добавляет. Точкой входа для этих команд является NVDA+X; таким образом, все команды должны выполняться с помощью NVDA+X, за которым следует другая одиночная буква или жест. Вы можете вывести список всех доступных многоуровневых команд, нажав NVDA+X, H.

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

Улучшенный диалог перезагрузки

Команда NVDA+X, Q открывает диалог для указания дополнительных параметров перед перезапуском NVDA. Указываемые параметры соответствуют параметрам командной строки, которые можно использовать с nvda.exe, например, -c для пути к конфигурации, --disable-addons для отключения дополнений и т.д.

Функции, связанные с залогированными ошибками

Сообщить о последней залогированной ошибке

Нажатие NVDA+X, E позволяет сообщить о последней залогированной ошибке без необходимости открывать лог. Второе нажатие очищает запомненную последнюю ошибку.

Воспроизведение звука для залогированных ошибок

Настройка "Воспроизводить звук при ошибках в журнале" была введена в NVDA 2021.3 и позволяет указать, будет ли NVDA воспроизводить звук ошибки в случае, если ошибка залогирована.

Это дополнение предоставляет дополнительную команду (NVDA+X, shift+E) для переключения этой настройки. Вы можете выбрать:

Для NVDA версии ниже 2021.3 это дополнение предоставляет обратный порт этой функции и возможность управлять ею с помощью клавиатурной команды. Однако флажок на панели дополнительных настроек не портирован.

Обозреватель свойств объекта

Эта функция позволяет сообщать некоторые свойства текущего объекта навигации без открытия просмотрщика лога.

Чтобы вывести список свойств объекта, переместите на него объект навигации и используйте следующие команды:

Список поддерживаемых свойств следующий: name, role, state, value, windowClassName, windowControlID, windowHandle, location, Python class, Python class mro.

При использовании команд навигации по объектам вы также можете выбрать, чтобы сообщалось выбранное в данный момент свойство, вместо обычного сообщения NVDA об объекте. Команда-переключатель NVDA+X, control+N позволяет переключаться между этим пользовательским сообщением об объектах и обычным сообщением NVDA.

Например, вы можете выбрать свойство "windowClassName" и включить пользовательское сообщение об объектах. Затем при перемещении объекта навигации к следующему или предыдущему объекту вы будете слышать windowClassName объекта вместо обычного сообщения.

Инструменты для скриптов и исходного кода

Команды для открытия исходного кода

Дополнение предоставляет три команды, позволяющие открыть исходный код.

Первая команда позволяет открыть исходный код скрипта, зная его жест. Чтобы использовать её, нажмите NVDA+x, C, а затем жест скрипта, код которого вы хотите увидеть. Например, чтобы увидеть код скрипта, который сообщает заголовок окна переднего плана, нажмите NVDA+X, C, а затем NVDA+T.

Две другие команды позволяют открыть исходный код по его пути:

Для работы этих команд вам необходимо настроить команду вашего любимого редактора в настройках дополнения. Если вы не запускаете NVDA из исходников, также должна быть настроена расположение исходного кода NVDA.

Расширенный режим описания скриптов

Расширенный режим описания скриптов позволяет получать сообщаемую информацию о скриптах без описания в режиме справки по вводу.

Когда активен расширенный режим описания скриптов, режим справки по вводу (NVDA+1) изменяется следующим образом. Если у скрипта нет описания, сообщаются имя и класс скрипта. Если у скрипта есть описание, его описание сообщается как обычно. Жест для активации или деактивации этой функции — NVDA+X, D.

Выполнение жеста, связанного со скриптом без описания в режиме справки по вводу, также создает запись для этого скрипта в диалоге управления жестами. Эта запись находится в специальной категории под названием "Скрипты без описания (изменяйте на свой страх и риск!)". Это позволяет легко добавлять, удалять или изменять нативные жесты NVDA для этих скриптов. Однако имейте в виду, что часто предполагается, что у таких скриптов нет описания, чтобы пользователь не мог изменить связанный жест. Действительно, жест может быть определен для соответствия сочетанию клавиш приложения. Например, скрипт script_toggleItalic на NVDAObjects.window.winword.WordDocument связан с control+I, и это не следует изменять, поскольку жест передается приложению для фактического выполнения сочетания клавиш.

Пример использования

Control+shift+I также переключает курсив в Word, даже если это нативно не сообщается NVDA. Чтобы результат control+shift+I сообщался NVDA как control+I, вы должны выполнить следующие шаги:

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

Функции чтения и анализа логов

Размещение маркеров в логе

Во время тестирования или работы вам может понадобиться отметить определенный момент в логе, чтобы позже легко вернуться к нему при чтении лога. Чтобы добавить маркирующее сообщение в лог, нажмите NVDA+X, K. Сообщение следующего вида будет залогировано на уровне INFO: -- NDTT marker 0 -- Вы можете добавить столько маркеров, сколько хотите, в лог. Номер маркера будет увеличиваться каждый раз, когда вы размещаете маркер в логе; он сбрасывается только при перезапуске NVDA.

Режим чтения логов

Режим чтения логов предоставляет команды для облегчения чтения и анализа логов. В окне просмотрщика лога и в области вывода консоли Python режим чтения логов включен по умолчанию, поэтому команды чтения логов доступны сразу. В другой области чтения текста, такой как редактор (например, Notepad++) или веб-страница (например, проблема на GitHub), вам нужно нажать NVDA+X, L, чтобы включить режим чтения логов и использовать его команды. Когда вы закончите с задачами чтения и анализа логов, вы можете снова отключить NVDA+X, L, чтобы выключить режим чтения логов.

Команды, доступные в режиме чтения логов, описаны далее. В этом режиме вы также можете нажать control+H, чтобы отобразить все доступные команды.

Команды быстрой навигации

Однобуквенные команды, аналогичные клавишам быстрой навигации в режиме просмотра, позволяют переходить к различным типам сообщений лога:

Нажатие одной буквы перемещает к следующему вхождению этого сообщения. Сочетание буквы с клавишей shift перемещает к предыдущему вхождению этого сообщения.

Кроме того, внутри определенных типов сообщений вы можете перепрыгивать блоками, нажимая O или shift+O. Поддерживаются следующие типы сообщений и связанные с ними блоки:

Наконец, внутри блока вам может понадобиться быстро перейти к первой или последней интересующей строке блока. Используйте shift+L, чтобы перейти к первой интересующей строке содержимого текущего блока, например, к первому фрейму трассировки стека. И L, чтобы перейти к последней интересующей строке содержимого блока, например, к последнему фрейму стека потока или ошибке под трассировкой стека.

Перевод речевых сообщений

Иногда вам может понадобиться просмотреть лог, снятый на системе с иностранным языком, который вы не понимаете. Например, лог был снят на китайской системе / NVDA, а вы понимаете только французский. Если у вас установлено дополнение Instant Translate, вы можете использовать его в сочетании с командами быстрой навигации по логам, чтобы переводить речевые сообщения.

Если вы хотите отключить перевод речи, снова нажмите control+T.

Открытие файла исходного кода в вашем редакторе

В логе некоторые строки могут ссылаться на исходный код:

Вам может понадобиться открыть файл, содержащий этот код, чтобы понять контекст трассировки стека или залогированного сообщения. Просто нажмите C, чтобы открыть этот файл.

Для работы этой функции вам необходимо настроить команду вашего любимого редактора в настройках дополнения. Если вы не запускаете NVDA из исходников, также должна быть настроена расположение исходного кода NVDA.

Анализ трассировки стека

Иногда в логе могут быть трассировки стека ошибок, как в следующем примере:

ERROR - scriptHandler.executeScript (14:47:43.426) - MainThread (15492):
error executing script: <bound method LogContainer.script_openSourceFile of <NVDAObjects.Dynamic_LogViewerLogContainerIAccessibleRichEdit50WindowNVDAObject object at 0x34C1E510>> with gesture 'c'
Traceback (most recent call last):
File "scriptHandler.pyc", line 300, in executeScript
File "C:\Users\myUserName\AppData\Roaming\nvda\addons\nvdaDevTestToolbox\globalPlugins\ndtt\logReader.py", line 603, in script_openSourceFile
if self.openStackTraceLine(line):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\myUserName\AppData\Roaming\nvda\addons\nvdaDevTestToolbox\globalPlugins\ndtt\logReader.py", line 667, in openStackTraceLine
0 / 0 # An erroneaous code line
~~^~~
ZeroDivisionError: division by zero

Для фреймов, где доступен исходный код, вы могли заметить маркеры с символами ^ (каретка) и ~ (тильда). Таким образом Python визуально указывает местоположение ошибки, а также её контекст во фрейме трассировки стека. Нажатие control+E перемещает курсор в начало ошибки в строке исходного кода, т.е. к тексту, отмеченному символом ^ (каретка). Двойное нажатие выделяет этот текст. Тройное нажатие выделяет ошибку вместе с её контекстом, т.е. текст строки исходного кода, отмеченный символами ^ (каретка) и ~ (тильда).

Обратите внимание, что для логов, снятых с версией NVDA до 2024.1, то есть с Python 3.7 или старше, Python указывает ошибку только одним символом ^ (каретка). Таким образом, двойное или тройное нажатие этой команды становится довольно бесполезным.

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

Чтобы отобразить список всех доступных команд в режиме чтения лога, нажмите control+H.

Анонимизация лога

При сообщении о проблемах вам, возможно, придется предоставить лог. Однако логи могут содержать конфиденциальную информацию (имена пользователей, адреса электронной почты и т.д.). Это дополнение предоставляет команду для анонимизации содержимого лога.

Выберите часть лога или все его содержимое и нажмите NVDA+X, A. Анонимизированное содержимое лога будет помещено в буфер обмена. Вы можете вставить его на текущее выделение, чтобы заменить его, или в любое другое место.

Для работы этой функции вам необходимо настроить правила анонимизации, используемые этой командой. Файл для настройки этих правил находится по адресу: pathToNVDAConfig\ndtt\anonymizationRules.dic (например, C:\Users\myUserName\AppData\Roaming\nvda\ndtt\consoleStartup.py). Вы найдете все инструкции для написания этого файла в его заголовке. В случае, если вы повредили файл правил анонимизации или удалили инструкции в заголовке, просто удалите или переименуйте этот файл, и новая версия этого файла будет создана при следующем запуске.

Резервное копирование старых логов

NVDA уже предоставляет резервную копию лога предыдущего сеанса NVDA; файл называется nvda-old.log. Однако иногда вам может понадобиться доступ к более старым логам, например, потому что вам пришлось снова перезапустить NVDA, прежде чем просмотреть nvda-old.log. Это дополнение позволяет настроить, хотите ли вы создавать резервные копии старых логов и сколько их; это делается в настройках дополнения.

Диалог менеджера логов позволяет просматривать сохраненные резервные копии логов. Его можно открыть, перейдя в меню NVDA -> Сервис -> Менеджер логов. В этом диалоге вы можете увидеть список всех резервных копий логов и выполнить различные действия с выбранным логом:

Вы также можете выбрать несколько логов для выполнения действия над всеми ими.

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

Расширение консоли Python

Функция openCodeFile

В консоли вы можете вызвать следующую функцию, чтобы просмотреть исходный код, определяющий переменную myVar: openCodeFile(myVar)

Для работы этой функции вам необходимо настроить команду вашего любимого редактора в настройках дополнения. Если вы не запускаете NVDA из исходников, также должна быть настроена расположение исходного кода NVDA.

Функция openCodeFile может быть вызвана для объектов, определенных в коде NVDA, или для объектов, определенных дополнениями. Она не может быть вызвана для объектов, исходный код которых недоступен, таких как встроенные объекты Python.

Если вы еще не импортировали объект в консоль, вы также можете передать его имя в качестве параметра функции openCodeFile.

Ниже приведены примеры вызова для кода NVDA:

Стартовый скрипт консоли Python

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

Например, скрипт позволяет выполнять новые импорты и определять псевдонимы, которые вы сможете использовать непосредственно в консоли, как показано ниже:

# Различные импорты, которые я хочу видеть в консоли.
import globalVars as gv
import core
import ui
# Псевдонимы
ocf = openCodeFile

Скрипт для консоли Python должен быть размещен в следующем месте: pathToNVDAConfig\ndtt\consoleStartup.py Например: C:\Users\myUserName\AppData\Roaming\nvda\ndtt\consoleStartup.py

Примечание: В Python 2, т.е. в NVDA 2019.2.1 или более ранней, поддерживаются только скрипты в чистой кодировке ASCII; любая другая кодировка, например, Unicode, не поддерживается.

Сохранение истории ввода консоли Python

В истории консоли Python вы можете использовать стрелки вверх и вниз для просмотра и редактирования предыдущих вводов. Однако список предыдущих вводов очищается при выходе из NVDA. Это дополнение предоставляет опцию, включенную по умолчанию, позволяющую сохранять историю ввода консоли Python даже при перезапуске NVDA.

Логирование вызовов функций

Иногда вам может понадобиться увидеть, какая часть кода отвечает за озвучивание чего-либо. Для этого вы можете включить логирование вызовов функции speech.speech.speak, нажав NVDA+X, S. Каждый раз, когда NVDA что-то произносит, соответствующее сообщение будет залогировано, включая трассировку стека, что позволит вам идентифицировать код, вызвавший этот речевой вывод. Когда вы закончите, отключите логирование вызовов функций тем же жестом.

Таким же образом вы можете выбрать логирование вызовов функций вывода tones.beep, braille.BrailleBuffer.update или nvwave.playWaveFile, чтобы отследить происхождение звукового сигнала, вывода брайля или звука (например, звука орфографической ошибки). Целевая функция может быть выбрана в параметрах дополнения. Вы даже можете логировать стек вызовов пользовательской функции.

По умолчанию логирование вызовов функций выполняется с использованием метода "settrace": он использует sys.settrace, threading.settrace и/или threading.settrace_all_threads для установки обратного вызова трассировки, который вызывается при событии возврата из целевой функции. В качестве альтернативы, если вы не получаете удовлетворительных результатов, вы можете выбрать метод "monkey patching", при котором патчится сама целевая функция (например, speech.speech.speak). Оба метода имеют ограничения, которые могут помешать логированию вызовов функций в определенных комбинированных условиях. Например, метод "settrace" может не работать с версиями NVDA ниже 2026.1, когда целевая функция выполняется из потока, отличного от основного, и логирование вызовов функций включается после запуска потока целевой функции. С другой стороны, метод "monkey patching" может не работать, когда целевая функция импортируется через оператор from import (например, from tones import beep).

Вы можете переключать метод, используемый для логирования вызовов функций, в соответствующей настройке или нажатием NVDA+X, shift+S.

Команда обратного перевода

Многие тестировщики используют NVDA на другом языке, кроме английского. Но при сообщении результатов тестирования на GitHub описания измененных опций или сообщения, озвученные NVDA, должны быть написаны на английском. Довольно утомительно и отнимает много времени перезапускать NVDA на английском, чтобы проверить точную формулировку опций или сообщений.

Чтобы избежать этого, дополнение предоставляет две команды обратного перевода, позволяющие обратно перевести интерфейс NVDA, такие как сообщения, метки элементов управления в графическом интерфейсе и т.д.

Более конкретно, обратно переводится первая строка последней речевой последовательности.

Например, во французской NVDA, если я нажму стрелку вниз на меню "Сервис" (фр. "Outils"), NVDA произнесет "Outils sous-Menu o", что означает "Tools subMenu o". Если я нажму команду обратного перевода сразу после этого, NVDA обратно переведет "Outils" в "Tools".

Посмотрев в лог позже, мы можем найти следующие строки:


Для фреймов, где доступен исходный код, вы могли заметить маркеры с символами `^` (каретка) и `~` (тильда).
Таким образом Python визуально указывает местоположение ошибки, а также её контекст во фрейме трассировки стека.
Нажатие `control+E` перемещает курсор в начало ошибки в строке исходного кода, т.е. к тексту, отмеченному символом `^` (каретка).
Двойное нажатие выделяет этот текст.
Тройное нажатие выделяет ошибку вместе с её контекстом, т.е. текст строки исходного кода, отмеченный символами `^` (каретка) и `~` (тильда).

Обратите внимание, что для логов, снятых с версией NVDA до 2024.1, то есть с Python 3.7 или старше, Python указывает ошибку только одним символом `^` (каретка).
Таким образом, двойное или тройное нажатие этой команды становится довольно бесполезным.

#### Получение сводки доступных команд

Чтобы отобразить список всех доступных команд в режиме чтения лога, нажмите `control+H`.

## Анонимизация лога

При сообщении о проблемах вам, возможно, придется предоставить лог.
Однако логи могут содержать конфиденциальную информацию (имена пользователей, адреса электронной почты и т.д.).
Это дополнение предоставляет команду для анонимизации содержимого лога.

Выберите часть лога или все его содержимое и нажмите `NVDA+X, A`.
Анонимизированное содержимое лога будет помещено в буфер обмена.
Вы можете вставить его на текущее выделение, чтобы заменить его, или в любое другое место.

Для работы этой функции вам необходимо настроить правила анонимизации, используемые этой командой.
Файл для настройки этих правил находится по адресу: `pathToNVDAConfig\ndtt\anonymizationRules.dic` (например, `C:\Users\myUserName\AppData\Roaming\nvda\ndtt\consoleStartup.py`).
Вы найдете все инструкции для написания этого файла в его заголовке.
В случае, если вы повредили файл правил анонимизации или удалили инструкции в заголовке, просто удалите или переименуйте этот файл, и новая версия этого файла будет создана при следующем запуске.

<a id="oldLogsBackup"></a>
## Резервное копирование старых логов

NVDA уже предоставляет резервную копию лога предыдущего сеанса NVDA; файл называется `nvda-old.log`.
Однако иногда вам может понадобиться доступ к более старым логам, например, потому что вам пришлось снова перезапустить NVDA, прежде чем просмотреть `nvda-old.log`.
Это дополнение позволяет настроить, хотите ли вы создавать резервные копии старых логов и сколько их; это делается в [настройках дополнения](#settingsLogsBackup).

Диалог менеджера логов позволяет просматривать сохраненные резервные копии логов.
Его можно открыть, перейдя в меню NVDA -> Сервис -> Менеджер логов.
В этом диалоге вы можете увидеть список всех резервных копий логов и выполнить различные действия с выбранным логом:

* открыть его (нажмите `Enter`)
* удалить его (нажмите `Delete`)
* скопировать файл лога (нажмите `control+C`)

Вы также можете выбрать несколько логов для выполнения действия над всеми ими.

Чтобы иметь возможность открыть лог, вы должны сначала настроить [Команду для открытия файла в вашем любимом редакторе](#settingsOpenCommand).

## Расширение консоли Python

<a id="pythonConsoleOpenCodeFile"></a>
### Функция `openCodeFile`

В консоли вы можете вызвать следующую функцию, чтобы просмотреть исходный код, определяющий переменную `myVar`:
`openCodeFile(myVar)`

Для работы этой функции вам необходимо настроить [команду вашего любимого редактора](#settingsOpenCommand) в настройках дополнения.
Если вы не запускаете NVDA из исходников, также должна быть настроена [расположение исходного кода NVDA](#settingsNvdaSourcePath).

Функция `openCodeFile` может быть вызвана для объектов, определенных в коде NVDA, или для объектов, определенных дополнениями.
Она не может быть вызвана для объектов, исходный код которых недоступен, таких как встроенные объекты Python.

Если вы еще не импортировали объект в консоль, вы также можете передать его имя в качестве параметра функции `openCodeFile`.

Ниже приведены примеры вызова для кода NVDA:

* Просмотр определения функции `speech.speech.speak`:
  `openCodeFile(speech.speech.speak)`
  или с передачей имени в качестве параметра:
  `openCodeFile("speech.speech.speak")`
* Просмотр определения класса `TextInfo`:
  `openCodeFile(textInfos.TextInfo)`
* Просмотр определения метода `copyToClipboard` класса `TextInfo`:
  `openCodeFile(textInfos.TextInfo.copyToClipboard)`
* Просмотр определения класса текущего объекта в фокусе:
  `openCodeFile(focus)`
* Открытие файла `api.py`, определяющего модуль `api`:
  `openCodeFile(api)`

### Стартовый скрипт консоли Python

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

Например, скрипт позволяет выполнять новые импорты и определять псевдонимы, которые вы сможете использовать непосредственно в консоли, как показано ниже:

    # Различные импорты, которые я хочу видеть в консоли.
    import globalVars as gv
    import core
    import ui
    # Псевдонимы
    ocf = openCodeFile

Скрипт для консоли Python должен быть размещен в следующем месте: `pathToNVDAConfig\ndtt\consoleStartup.py`
Например: `C:\Users\myUserName\AppData\Roaming\nvda\ndtt\consoleStartup.py`

Примечание: В Python 2, т.е. в NVDA 2019.2.1 или более ранней, поддерживаются только скрипты в чистой кодировке ASCII; любая другая кодировка, например, Unicode, не поддерживается.

### Сохранение истории ввода консоли Python

В истории консоли Python вы можете использовать стрелки вверх и вниз для просмотра и редактирования предыдущих вводов.
Однако список предыдущих вводов очищается при выходе из NVDA.
Это дополнение предоставляет [опцию](#settingsPreserveHistory), включенную по умолчанию, позволяющую сохранять историю ввода консоли Python даже при перезапуске NVDA.

<a id="loggingFunctionCall"></a>
## Логирование вызовов функций

Иногда вам может понадобиться увидеть, какая часть кода отвечает за озвучивание чего-либо.
Для этого вы можете включить логирование вызовов функции `speech.speech.speak`, нажав `NVDA+X, S`.
Каждый раз, когда NVDA что-то произносит, соответствующее сообщение будет залогировано, включая трассировку стека, что позволит вам идентифицировать код, вызвавший этот речевой вывод.
Когда вы закончите, отключите логирование вызовов функций тем же жестом.

Таким же образом вы можете выбрать логирование вызовов функций вывода `tones.beep`, `braille.BrailleBuffer.update` или `nvwave.playWaveFile`, чтобы отследить происхождение звукового сигнала, вывода брайля или звука (например, звука орфографической ошибки).
[Целевая функция](#targetFunctionForCallLogSetting) может быть выбрана в параметрах дополнения.
Вы даже можете логировать стек вызовов пользовательской функции.

По умолчанию логирование вызовов функций выполняется с использованием метода "settrace": он использует `sys.settrace`, `threading.settrace` и/или `threading.settrace_all_threads` для установки обратного вызова трассировки, который вызывается при событии возврата из целевой функции.
В качестве альтернативы, если вы не получаете удовлетворительных результатов, вы можете выбрать метод "monkey patching", при котором патчится сама целевая функция (например, `speech.speech.speak`).
Оба метода имеют ограничения, которые могут помешать логированию вызовов функций в определенных комбинированных условиях.
Например, метод "settrace" может не работать с версиями NVDA ниже 2026.1, когда целевая функция выполняется из потока, отличного от основного, и логирование вызовов функций включается после запуска потока целевой функции.
С другой стороны, метод "monkey patching" может не работать, когда целевая функция импортируется через оператор from import (например, `from tones import beep`).

Вы можете переключать метод, используемый для логирования вызовов функций, в [соответствующей настройке](#functionCallLogMethodSetting) или нажатием `NVDA+X, shift+S`.

<a id="reverseTranslationCommand"></a>
## Команда обратного перевода

Многие тестировщики используют NVDA на другом языке, кроме английского.
Но при сообщении результатов тестирования на GitHub описания измененных опций или сообщения, озвученные NVDA, должны быть написаны на английском.
Довольно утомительно и отнимает много времени перезапускать NVDA на английском, чтобы проверить точную формулировку опций или сообщений.

Чтобы избежать этого, дополнение предоставляет две команды обратного перевода, позволяющие обратно перевести интерфейс NVDA, такие как сообщения, метки элементов управления в графическом интерфейсе и т.д.

* `NVDA+X, R` использует gettext-перевод NVDA, чтобы попытаться обратно перевести последнюю речь.
* `NVDA+X, shift+R` использует gettext-переводы из NVDA и его дополнений, чтобы попытаться обратно перевести последнюю речь.

Более конкретно, обратно переводится первая строка последней речевой последовательности.

Например, во французской NVDA, если я нажму стрелку вниз на меню "Сервис" (фр. "Outils"), NVDA произнесет "Outils  sous-Menu  o", что означает "Tools  subMenu  o".
Если я нажму команду обратного перевода сразу после этого, NVDA обратно переведет "Outils" в "Tools".

Посмотрев в лог позже, мы можем найти следующие строки:

Это подтверждает, что "Outils" была первой строкой в речевой последовательности.

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

Результат обратного перевода также копируется в буфер обмена, если включена соответствующая опция, что является значением по умолчанию.

Обратный перевод строк NVDA доступен только для версии NVDA 2022.1 или выше. Для более ранних версий NVDA доступны только строки дополнений для обратного перевода.

Кроме того, в версии NVDA 2019.2.1 или более ранней, в случае, если обратный перевод не найден, делается вторая попытка в первой части строки. Действительно, в этих версиях NVDA речевая последовательность выглядит так:

IO - speech.speak (12:39:12.684):
Speaking [u'Outils sous-Menu o']

Мы видим, что метка объекта может быть объединена с ролью, состоянием, сочетанием клавиш и т.д. Поэтому, если обратный перевод не дает результата для всей строки, делается вторая попытка для части строки перед двойным пробелом (" "). Однако это не является надежным, поскольку мы не можем исключить, что строка изначально содержит двойной пробел.

Настройки

Некоторые функции дополнения могут требовать специальной конфигурации. Панель настроек позволяет включать их или управлять их работой. Чтобы просмотреть и изменить эти настройки, перейдите в меню NVDA -> Параметры и выберите категорию NVDA Dev & Test Toolbox. Этот диалог настроек также можно открыть непосредственно из диалога Менеджера логов.

Эти настройки являются глобальными и могут быть настроены только при активном профиле по умолчанию.

Команда для открытия файла в вашем любимом редакторе

Некоторые функции позволяют просматривать содержимое в вашем любимом редакторе. К ним относятся команды для просмотра исходного файла из лога, из объекта в консоли или из введенного жеста, а также кнопка "Открыть" в менеджере логов.

Чтобы использовать их, вам сначала нужно настроить команду, которая будет вызываться для открытия файла в вашем любимом редакторе. Команда должна иметь вид: "C:\путь\к\моему\редактору\editor.exe" "{path}":{line} Вы, конечно, должны изменить эту строку в соответствии с реальным именем и расположением вашего редактора и синтаксисом, используемым им для открытия файлов. {path} будет заменен полным путем к файлу для открытия, а {line} — номером строки, на которую вы хотите установить курсор. Например, для Notepad++ команда, которую нужно ввести, будет: "C:\Program Files\Notepad++\notepad++.exe" "{path}" -n{line}

Путь к исходному коду NVDA

При использовании команды для просмотра исходного файла из лога, из объекта в консоли или из жеста или пути файл может принадлежать самому NVDA. Если вы не запускаете NVDA из исходников, ваша NVDA содержит только скомпилированные файлы. Таким образом, вы можете указать здесь альтернативное расположение, где будет найден соответствующий исходный файл, например, место, куда вы склонировали исходные файлы NVDA, чтобы исходный файл все равно можно было открыть. Путь должен быть таким: C:\pathExample\GIT\nvda\source Конечно, замените путь к исходному коду NVDA на правильный.

Однако убедитесь, что версия вашего исходного файла (например, коммит GIT) совпадает с версией запущенного экземпляра NVDA.

Резервное копирование старых логов

Раскрывающийся список "Резервное копирование старых логов" позволяет включить или отключить функцию. Если она включена, вы также можете указать ниже в "Ограничить количество резервных копий" максимальное количество резервных копий, которые вы хотите сохранить. Эти настройки вступают в силу только при следующем запуске NVDA, когда происходит резервное копирование.

Копировать результат обратного перевода в буфер обмена

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

Сохранять историю ввода консоли после перезапуска

Если этот флажок установлен, история ввода консоли Python будет сохраняться при перезапуске NVDA. Если он установлен, вы также можете указать ниже максимальное количество вводов, которые будут сохранены. Если он не установлен, NVDA будет вести себя как обычно, т.е. история консоли будет пустой после перезапуска.

Целевая функция для логирования вызовов

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

Если вы выберете вариант пользовательской функции, вам нужно будет ввести полное имя функции, вызовы которой вы хотите логировать. Это полное имя должно включать её местоположение (пакет, модуль, класс и т.д.). Будьте внимательны, определяйте функцию с её исходным местоположением, т.е. там, где она была фактически определена, иначе логирование вызовов с меньшей вероятностью будет работать. Например, используйте speech.speech.getCurrentLanguage, которая указывает на функцию, определенную в speech\speech.py, а не speech.getCurrentLanguage, которая указывает на символ, импортированный в speech\__init__.py.

Метод логирования вызовов функций

Этот раскрывающийся список определяет метод, используемый для идентификации вызовов функций при включении логирования вызовов функций. Этот параметр также можно переключать нажатием NVDA+X, shift+S. При изменении этого метода он сначала применится в следующий раз, когда будет активировано логирование вызовов функций; то есть он не применяется к текущему логированию вызовов функций, если оно в данный момент включено.

Журнал изменений

Версия 9.0

Версия 8.0

Версия 7.3

Версия 7.1

Версия 7.0

Версия 6.3

Версия 6.2

Версия 6.1

Версия 6.0

Версия 5.0

Версия 4.2

Версия 4.1

Версия 4.0

Версия 3.2

Версия 3.1

Версия 3.0

Версия 2.1

Версия 2.0

Версия 1.0

🔝 Назад к оглавлению

История версий

История версий
Версия файлаТестируемая версия NVDAМинимальная версия NVDAРазмер файла (КБ)Ссылка на загрузку
9.02025.3.22019.2316NvdaDevTestToolbox-V.9.0.nvda-addon
8.02025.3.12019.2306NvdaDevTestToolbox-V.8.0.nvda-addon
7.32025.32019.2281NvdaDevTestToolbox-V.7.3.nvda-addon
7.22025.12019.2281NvdaDevTestToolbox-V.7.2.nvda-addon
7.12025.12019.2281NvdaDevTestToolbox-V.7.1.nvda-addon
7.02024.12019.2258NvdaDevTestToolbox-V.7.0.nvda-addon
6.32024.12019.2220NvdaDevTestToolbox-V.6.3.nvda-addon
6.22023.22019.2217NvdaDevTestToolbox-V.6.2.nvda-addon
6.12023.22019.2215NvdaDevTestToolbox-V.6.1.nvda-addon
6.02023.22019.2209NvdaDevTestToolbox-V.6.0.nvda-addon
5.02023.22019.2192NvdaDevTestToolbox-V.5.0.nvda-addon
4.12023.12019.244NvdaDevTestToolbox-V.4.1.nvda-addon
4.02023.12019.243NVDADevTestToolbox-V.4.0.nvda-addon
3.22023.12019.232NvdaDevTestToolbox-V.3.2.nvda-addon
3.12022.42019.232NVDADevTestToolbox-V.3.1.nvda-addon
3.02022.32019.232NVDADevTestToolbox-V.3.0.nvda-addon
2.12022.12019.229NVDADevTestToolbox-V.2.1.nvda-addon
2.12022.12019.229NVDADevTestToolbox-V.2.1(1).nvda-addon
2.02022.12019.228NVDADevTestToolbox-V.2.0.nvda-addon
1.02021.22019.3.19NVDADevTestToolbox-V.1.0.nvda-addon
🔝 Назад к оглавлению