Spec-Zone.ru › Hammerspoon

hs.axuielement

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

Этот модуль работает с помощью axuielementObjects, являющихся представлением Hammerspoon для объекта доступности. Объект доступности представляет собой любой объект или компонент приложения OS X, который может быть изменён через API доступности OS X — это может быть приложение, окно, кнопка, выделенный текст и т. д. Таким образом, он может поддерживать только те функции и объекты внутри приложения, которые разработчики приложения предоставляют через API доступности.

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

Получение и установка значений атрибутов:

  • object.attribute — это сокращение для object:attributeValue(attribute)
  • object.attribute = value — это сокращение для object:setAttributeValue(attribute, value)
    • Если необходимо обнаруживать ошибки доступности, которые могут возникнуть, вы должны использовать формальные методы hs.axuielement:attributeValue и hs.axuielement:setAttributeValue
    • Обратите внимание, что установка значения атрибута не гарантируется ни для одного из методов:
      • внутренняя логика принимающего приложения может отказаться принять новое назначенное значение
      • может возникнуть ошибка доступности
      • элемент может быть не изменяемым (удивительно, что это не возвращает ошибку, даже когда hs.axuielement:isAttributeSettable возвращает false для указанного атрибута)
    • Если вам нужна подтверждение изменения, вам необходимо проверить значение атрибута с помощью одного из описанных выше методов после его установки.

Итерация по атрибутам:

  • for k,v in pairs(object) do ... end — это сокращение для for k,_ in ipairs(object:attributeNames()) do local v = object:attributeValue(k) ; ... end или for k,v in pairs(object:allAttributeValues()) do ... end (хотя см. примечание ниже)
    • Если необходимо обнаруживать ошибки доступности, которые могут возникнуть, вы должны использовать один из формальных подходов hs.axuielement:allAttributeValues или hs.axuielement:attributeNames и hs.axuielement:attributeValue
    • По умолчанию, hs.axuielement:allAttributeValues не будет включать пары ключ-значение, для которых атрибут (ключ) существует для элемента, но не имеет назначенного значения (nil) в данный момент. Это связано с тем, что значение nil предотвращает сохранение ключа в возвращаемой таблице. См. hs.axuielement:allAttributeValues для получения подробностей и обходных путей.

Итерация по дочерним элементам (AXChildren):

  • for i,v in ipairs(object) do ... end — это сокращение для for i,v in pairs(object:attributeValue("AXChildren") or {}) do ... end
    • Обратите внимание, что object:attributeValue("AXChildren") может вернуть nil, если объект не имеет атрибута AXChildren; сокращение не имеет этого ограничения.
  • #object — это сокращение для #object:attributeValue("AXChildren")
  • object[i] — это сокращение для object:attributeValue("AXChildren")[i]
    • Если необходимо обнаруживать ошибки доступности, которые могут возникнуть, вы должны использовать формальный метод hs.axuielement:attributeValue для получения атрибута "AXChildren".

Действия (hs.axuielement:actionNames):

  • object:do<action>() — это сокращение для object:performAction(action)
    • См. hs.axuielement:performAction для описания возвращаемых значений и hs.axuielement:actionNames для получения списка поддерживаемых элементом действий.

Атрибуты с параметрами:

  • object:<attribute>WithParameter(value) — это сокращение для `object:parameterizedAttributeValue(attribute, value)`

    • См. hs.axuielement:parameterizedAttributeValue для описания возвращаемых значений и hs.axuielement:parameterizedAttributeNames для получения списка поддерживаемых элементом параметризованных значений

    • Конкретное значение, необходимое для каждого параметризованного атрибута, отличается и часто зависит от приложения, поэтому требует некоторого экспериментирования. Примечания относительно идентифицированных типов параметров и размышления по некоторым, которые ещё исследуются, будут предоставлены в Википедии Hammerspoon, надеюсь, вскоре после того, как этот модуль станет частью выпуска Hammerspoon.

Подмодули

  • hs.axuielement.axtextmarker
  • hs.axuielement.observer

Обзор API

  • Константы — полезные значения, которые нельзя изменить
    • actions
    • attributes
    • orientations
    • parameterizedAttributes
    • roles
    • rulerMarkers
    • sortDirections
    • subroles
    • units
  • Функции — API-вызовы, предлагаемые непосредственно расширением
    • searchCriteriaFunction
  • Конструкторы — API-вызовы, которые возвращают объект, обычно тот, который предлагает API-методы
    • applicationElement
    • applicationElementForPID
    • systemElementAtPosition
    • systemWideElement
    • windowElement
  • Методы — API-вызовы, которые могут быть выполнены только на объекте, возвращённом конструктором
    • actionDescription
    • actionNames
    • allAttributeValues
    • allDescendantElements
    • asHSApplication
    • asHSWindow
    • attributeNames
    • attributeValue
    • attributeValueCount
    • buildTree
    • childrenWithRole
    • copy
    • elementAtPosition
    • elementSearch
    • isAttributeSettable
    • isValid
    • matchesCriteria
    • parameterizedAttributeNames
    • parameterizedAttributeValue
    • path
    • performAction
    • pid
    • setAttributeValue
    • setTimeout

Документация API

Константы

actions
Подпись hs.axuielement.actions[]
Тип Константа
Описание

Таблица общих имён действий объектов доступности, предоставленная для справки.

Примечания
  • эта таблица предоставлена только для справки и не претендует на полноту.
  • вы можете просмотреть содержимое этой таблицы из консоли Hammerspoon, набрав hs.axuielement.actions
Источник extensions/axuielement/libaxuielement.m строка 966
attributes
Подпись hs.axuielement.attributes[]
Тип Константа
Описание

Таблица общих имён атрибутов объектов доступности, которые могут быть использованы с hs.axuielement:elementSearch или hs.axuielement:matchesCriteria в качестве ключей в аргументе критериев сопоставления.

Примечания
  • Эта таблица предоставлена только для справки и не претендует на полноту.
  • Вы можете просмотреть содержимое этой таблицы из консоли Hammerspoon, набрав hs.axuielement.attributes
Источник extensions/axuielement/libaxuielement.m строка 743
orientations
Подпись hs.axuielement.orientations[]
Тип Константа
Описание

Таблица типов ориентации, которые могут быть использованы с hs.axuielement:elementSearch или hs.axuielement:matchesCriteria в качестве значений атрибута "AXOrientation" в аргументе критериев сопоставления.

Примечания
  • эта таблица предоставлена только для справки и может не быть полной.
  • вы можете просмотреть содержимое этой таблицы из консоли Hammerspoon, набрав hs.axuielement.orientations
Источник extensions/axuielement/libaxuielement.m строка 1127
parameterizedAttributes
Подпись hs.axuielement.parameterizedAttributes[]
Тип Константа
Описание

Таблица общих имён параметризованных атрибутов объектов доступности, предоставленная для справки.

Примечания
  • эта таблица предоставлена только для справки и не претендует на полноту.
  • вы можете просмотреть содержимое этой таблицы из консоли Hammerspoon, набрав hs.axuielement.parameterizedAttributes
  • Параметризованные атрибуты — это атрибуты, которые принимают аргумент при запросе элемента. Документации по большинству из них очень мало, и разработчики приложений могут реализовывать свои собственные, документации по которым нам может никогда не быть доступно. Эта таблица содержит имена параметризованных атрибутов, определённых в документации Apple, а также некоторые другие, которые были обнаружены.
  • Документация, охватывающая обнаруженное путём экспериментов, касательно параметризованных атрибутов, планируется и должна быть добавлена в вики Hammerspoon вскоре после того, как этот модуль станет частью формального выпуска.
Источник extensions/axuielement/libaxuielement.m строка 926
роли
Подпись hs.axuielement.roles[]
Тип Константа
Описание

Таблица общих ролей объектов доступности, которые можно использовать с hs.axuielement:elementSearch или hs.axuielement:matchesCriteria в качестве значений атрибута «AXRole» в аргументе критериев соответствия.

Примечания
  • эта таблица предоставляется только для справки и не претендует на полноту.
  • вы можете просмотреть содержимое этой таблицы из консоли Hammerspoon, введя hs.axuielement.roles
Источник extensions/axuielement/libaxuielement.m строка 990
маркеры линейки
Подпись hs.axuielement.rulerMarkers[]
Тип Константа
Описание

Таблица типов маркеров линейки, которые можно использовать с hs.axuielement:elementSearch или hs.axuielement:matchesCriteria в качестве значений атрибута «AXMarkerType» в аргументе критериев соответствия.

Примечания
  • эта таблица предоставляется только для справки и может быть неполной.
  • вы можете просмотреть содержимое этой таблицы из консоли Hammerspoon, введя hs.axuielement.rulerMarkers
Источник extensions/axuielement/libaxuielement.m строка 1159
направления сортировки
Подпись hs.axuielement.sortDirections[]
Тип Константа
Описание

Таблица типов направлений сортировки, которые можно использовать с hs.axuielement:elementSearch или hs.axuielement:matchesCriteria в качестве значений атрибута «AXSortDirection» в аргументе критериев соответствия.

Примечания
  • эта таблица предоставляется только для справки и может быть неполной.
  • вы можете просмотреть содержимое этой таблицы из консоли Hammerspoon, введя hs.axuielement.sortDirections
Источник extensions/axuielement/libaxuielement.m строка 1143
подроли
Подпись hs.axuielement.subroles[]
Тип Константа
Описание

Таблица общих подролей объектов доступности, которые можно использовать с hs.axuielement:elementSearch или hs.axuielement:matchesCriteria в качестве значений атрибута «AXSubrole» в аргументе критериев соответствия.

Примечания
  • эта таблица предоставляется только для справки и не претендует на полноту.
  • вы можете просмотреть содержимое этой таблицы из консоли Hammerspoon, введя hs.axuielement.subroles
Источник extensions/axuielement/libaxuielement.m строка 1067
единицы измерения
Подпись hs.axuielement.units[]
Тип Константа
Описание

Таблица типов единиц измерения, которые можно использовать с hs.axuielement:elementSearch или hs.axuielement:matchesCriteria в качестве значений атрибутов, указывающих типы единиц измерения (например, «AXUnits», «AXHorizontalUnits» и «AXVerticalUnits») в аргументе критериев соответствия.

Примечания
  • эта таблица предоставляется только для справки и может быть неполной.
  • вы можете просмотреть содержимое этой таблицы из консоли Hammerspoon, введя hs.axuielement.units
Источник extensions/axuielement/libaxuielement.m строка 1180

Функции

функция поиска критериев
Подпись hs.axuielement.searchCriteriaFunction(criteria) -> function
Тип Функция
Описание

Возвращает функцию для использования с hs.axuielement:elementSearch, которая использует hs.axuielement:matchesCriteria с указанными критериями.

Параметры
  • criteria - определение критериев, как определено для метода hs.axuielement:matchesCriteria.
Возвращаемое значение
  • функция, которая может быть использована в качестве criteriaFunction для hs.axuielement:elementSearch.
Источник extensions/axuielement/axuielement.lua строка 464

Конструкторы

элемент приложения
Подпись hs.axuielement.applicationElement(applicationObject) -> axuielementObject
Тип Конструктор
Описание

Возвращает верхнеуровневый объект доступности для приложения, указанного объектом hs.application.

Параметры
  • applicationObject - объект hs.application для приложения или строка или число, которые будут переданы hs.application.find, чтобы получить объект hs.application.
Возвращаемое значение
  • объект axuielement для указанного приложения
Примечания
  • если applicationObject является строкой или числом, только первый найденный элемент с hs.application.find будет использован этой функцией для создания объекта axuielementObject.
Источник extensions/axuielement/libaxuielement.m строка 98
элемент приложения для PID
Подпись hs.axuielement.applicationElementForPID(pid) -> axuielementObject
Тип Конструктор
Описание

Возвращает верхнеуровневый объект доступности для приложения с указанным идентификатором процесса.

Параметры
  • pid - идентификатор процесса приложения.
Возвращаемое значение
  • объект axuielement для указанного приложения, или nil, если его нельзя определить
Источник extensions/axuielement/libaxuielement.m строка 144
элемент системы в позиции
Подпись hs.axuielement.systemElementAtPosition(x, y | pointTable) -> axuielementObject
Тип Конструктор
Описание

Возвращает объект доступности в указанной позиции на экране. Левый верхний угол основного экрана — 0, 0.

Параметры
  • x - координата x экрана для проверки. Если этот параметр указан, то параметр y также должен быть указан, а параметр pointTable не должен быть указан.
  • y - координата y экрана для проверки. Этот параметр необходим, если параметр x указан.
  • pointTable - координаты x и y позиции на экране, предоставленные как точка-таблица, подобная той, что возвращается hs.mouse.getAbsolutePosition (точка-таблица — это таблица со значениями ключей для ключей x и y). Если этот параметр указан, то отдельные параметры x и y не должны также присутствовать.
Возвращаемое значение
  • объект axuielement для объекта в указанных координатах, или nil, если объект не был идентифицирован.
Примечания
  • См. также hs.axuielement:elementAtPosition — эта функция является сокращением для hs.axuielement.systemWideElement():elementAtPosition(...).
  • Эта функция выполняет проверку нажатия на основе порядка z окон (то есть, слоения). Если одно окно расположено поверх другого окна, возвращаемый объект доступности происходит от окна, которое расположено поверх других в указанном месте.
Источник extensions/axuielement/axuielement.lua строка 86
элемент всей системы
Подпись hs.axuielement.systemWideElement() -> axuielementObject
Тип Конструктор
Описание

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

Параметры
  • Нет
Возвращаемое значение
  • объект axuielement для системных атрибутов
Источник extensions/axuielement/libaxuielement.m строка 126
END_OF_DOCUMENT_MARKER
windowElement
Signature hs.axuielement.windowElement(windowObject) -> axuielementObject
Type Constructor
Description

Возвращает объект доступности для окна, указанного объектом hs.window.

Parameters
  • windowObject - объект hs.window для окна или строка или число, которые будут переданы в hs.window.find для получения объекта hs.window.
Returns
  • объект axuielementObject для указанного окна
Notes
  • Если windowObject является строкой или числом, только первый найденный элемент с hs.window.find будет использован этой функцией для создания объекта axuielementObject.
Source extensions/axuielement/libaxuielement.m строка 70

Methods

actionDescription
Signature hs.axuielement:actionDescription(action) -> string | nil, errString
Type Method
Description

Возвращает локализованное описание действия указанного объекта доступности.

Parameters
  • action - имя действия, как указано в hs.axuielement:actionNames.
Returns
  • строка, содержащая описание действия объекта, nil, если описание недоступно, или nil и строка с ошибкой, если произошла ошибка доступности
Notes
  • Описание действий предоставляется целевым приложением; точность и полезность описания зависят от разработчиков целевого приложения.
Source extensions/axuielement/libaxuielement.m строка 254
actionNames
Signature hs.axuielement:actionNames() -> table | nil, errString
Type Method
Description

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

Parameters
  • None
Returns
  • массив имён всех поддерживаемых действиях axuielementObject или nil и строка с ошибкой, если произошла ошибка доступности
Notes
  • Общие имена действий можно найти в таблице hs.axuielement.actions; однако этот метод будет отображать только те имена, которые поддерживаются этим объектом, и не ограничивается только теми, которые указаны в таблице.
Source extensions/axuielement/libaxuielement.m строка 221
allAttributeValues
Signature hs.axuielement:allAttributeValues([includeErrors]) -> table | nil, errString
Type Method
Description

Возвращает таблицу, содержащую пары «ключ-значение» для всех атрибутов объекта доступности.

Parameters
  • includeErrors - необязательный булево значение, по умолчанию false, указывающее, включать ли в возвращаемые результаты имена атрибутов, которые генерируют ошибку при извлечении.
Returns
  • таблица с парами «ключ-значение», соответствующими атрибутам объекта доступности, или nil и строка с ошибкой, если произошла ошибка доступности
Notes
  • Если includeErrors не указан или равен false, то атрибуты, которые существуют для элемента, но в настоящее время не имеют назначенного значения, не будут отображаться в таблице. Это связано с тем, что Lua обрабатывает значение nil для пары «ключ-значение» таблицы как инструкцию по удалению ключа из таблицы, если он в ней в данный момент существует.
  • Чтобы включить атрибуты, которые существуют, но в настоящее время не заданы, необходимо указать includeErrors как true.
    • атрибутам, для которых в настоящее время не назначено значения, будет присвоено значение таблицы с парами «ключ-значение»:
      • _code = -25212
      • error = "Запрашиваемое значение не существует"
Source extensions/axuielement/libaxuielement.m строка 315
allDescendantElements
Signature hs.axuielement:allDescendantElements(callback, [withParents]) -> elementSearchObject
Type Method
Description

Запрос объекта доступности для всех дочерних объектов доступности и их потомков.

Parameters
  • callback - обязательная функция, которая должна ожидать два аргумента: строку msg, указывающую, как закончился поиск, и таблицу, содержащую обнаруженные дочерние элементы. msg будет «завершён» при нормальном завершении обхода, и будет содержать строку, начинающуюся с «**», если он завершается преждевременно по какой-либо причине (см. раздел «Примечания» для получения дополнительной информации)
  • withParents - необязательный булево значение, по умолчанию false, указывающее, что родитель объектов (и их потомки) должны быть собраны также.
Returns
  • объект elementSearchObject, как описано в hs.axuielement:elementSearch
Notes
  • Этот метод является синтаксическим сахаром для hs.axuielement:elementSearch(callback, { [includeParents = withParents] }). Обратитесь к hs.axuielement:elementSearch для получения подробностей о возвращаемом объекте и аргументах обратного вызова.
Source extensions/axuielement/axuielement.lua строка 502
asHSApplication
Signature hs.axuielement:asHSApplication() -> hs.application object | nil
Type Method
Description

Если элемент относится к приложению, вернуть объект hs.application для элемента.

Parameters
  • None
Returns
  • если элемент относится к приложению, вернуть объект hs.application для элемента; в противном случае вернуть nil
Notes
  • Элемент считается приложением этим методом, если у него есть AXRole AXApplication и идентификатор процесса (pid).
Source extensions/axuielement/libaxuielement.m строка 645
asHSWindow
Signature hs.axuielement:asHSWindow() -> hs.window object | nil
Type Method
Description

Если элемент относится к окну, вернуть объект hs.window для элемента.

Parameters
  • None
Returns
  • если элемент относится к окну, вернуть объект hs.window для элемента; в противном случае вернуть nil
Notes
  • Элемент считается окном этим методом, если у него есть AXRole AXWindow.
Source extensions/axuielement/libaxuielement.m строка 680
attributeNames
Signature hs.axuielement:attributeNames() -> table | nil, errString
Type Method
Description

Возвращает список всех атрибутов, поддерживаемых указанным объектом доступности.

Parameters
  • None
Returns
  • массив имён всех поддерживаемых атрибутов axuielementObject или nil и строка с ошибкой, если произошла ошибка доступности
Notes
  • Общие имена атрибутов можно найти в таблицах hs.axuielement.attributes; однако этот метод будет отображать только те имена, которые поддерживаются этим объектом, и не ограничивается только теми, которые указаны в таблице.
Source extensions/axuielement/libaxuielement.m строка 188
attributeValue
Signature hs.axuielement:attributeValue(attribute) -> value | nil, errString
Type Method
Description

Возвращает значение атрибута объекта доступности.

Parameters
  • attribute - имя атрибута, как указано в hs.axuielement:attributeNames.
Returns
  • текущее значение атрибута, nil, если у атрибута нет значения, или nil и строка с ошибкой, если произошла ошибка доступности
Source extensions/axuielement/libaxuielement.m строка 286
attributeValueCount
Signature hs.axuielement:attributeValueCount(attribute) -> integer | nil, errString
Type Method
Description

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

Parameters
  • attribute - имя атрибута, как указано в hs.axuielement:attributeNames.
Returns
  • количество элементов в значении для атрибута, если это массив, или nil и строка с ошибкой, если произошла ошибка доступности
Source extensions/axuielement/libaxuielement.m строка 365
END_OF_DOCUMENT_MARKER
buildTree
Подпись hs.axuielement:buildTree(callback, [depth], [withParents]) -> elementSearchObject
Тип Метод
Описание

Захватывает всю доступную информацию об объекте доступности и его потомках и возвращает её в таблице для проверки.

Параметры
  • callback - обязательная функция, которая должна принимать два аргумента: строку msg, указывающую, как закончился поиск, и таблицу, содержащую записанную информацию. msg будет «завершён» при нормальном завершении поиска (или достижении заданной глубины) и будет содержать строку, начинающуюся с «**», если он завершится преждевременно по какой-либо причине (см. раздел «Примечания» для получения дополнительной информации)
  • depth - необязательное целое число, значение по умолчанию math.huge, задающее максимальную глубину от исходного объекта доступности, которая должна быть посещена для определения дочерних элементов и их атрибутов.
  • withParents - необязательный булевый параметр, значение по умолчанию false, определяющий, нужно ли посещать атрибуты элемента (или потомков) для AXParent и AXTopLevelUIElement при определении дополнительных элементов для включения в таблицу результатов.
Возвращаемое значение
  • объект elementSearch, как описано в hs.axuielement:elementSearch
Примечания
  • Формат таблицы results, передаваемой в обратный вызов для этого метода, предназначен в первую очередь для отладки и исследовательских целей и может не быть организован для удобной программной обработки.
  • Этот метод является синтаксическим сахаром для hs.axuielement:elementSearch(callback, { objectOnly = false, asTree = true, [depth = depth], [includeParents = withParents] }). Обратитесь к hs.axuielement:elementSearch для получения подробностей о возвращаемом объекте и аргументах обратного вызова.
Источник extensions/axuielement/axuielement.lua строка 478
childrenWithRole
Подпись hs.axuielement:childrenWithRole(role) -> table
Тип Метод
Описание

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

Параметры
  • role - строка, определяющая роль, которую должны выполнять возвращаемые потомки. Примеры значений можно найти в hs.axuielement.roles.
Возвращаемое значение
  • таблица, содержащая ноль или более axuielementObjects.
Примечания
  • ищут только непосредственные потомки объекта.
Источник extensions/axuielement/axuielement.lua строка 972
copy
Подпись hs.axuielement:copy() -> axuielementObject
Тип Метод
Описание

Возвращает дубликат ссылки userdata на объект доступности.

Параметры
  • Никаких
Возвращаемое значение
  • новый объект userdata, представляющий новую ссылку на объект доступности.
Источник extensions/axuielement/libaxuielement.m строка 171
elementAtPosition
Подпись hs.axuielement:elementAtPosition(x, y | pointTable) -> axuielementObject | nil, errString
Тип Метод
Описание

Возвращает объект доступности в указанной позиции на экране. Левый верхний угол основного экрана имеет координаты 0, 0.

Параметры
  • x - координата x расположения на экране для проверки. Если этот параметр указан, то параметр y также должен быть указан, а параметр pointTable не должен быть указан.
  • y - координата y расположения на экране для проверки. Этот параметр обязателен, если указан параметр x.
  • pointTable - координаты x и y расположения на экране, заданные как таблица точек, подобная возвращаемой hs.mouse.getAbsolutePosition (таблица точек — это таблица со значениями для ключей x и y). Если этот параметр указан, то отдельные параметры x и y не должны быть указаны.
Возвращаемое значение
  • объект axuielementObject для объекта в указанных координатах или nil и строка ошибки, если объект не был идентифицирован или произошла ошибка доступа
Примечания
  • Этот метод может быть вызван только на объекте axuielementObject, который представляет собой приложение или элемент системы (см. hs.axuielement.systemWideElement).
  • Этот метод выполняет проверку попадания на основе порядка z окна (то есть, слоёв). Если одно окно расположено поверх другого, возвращаемый объект доступности берётся из того окна, которое находится сверху в указанном расположении.
  • Если этот метод вызывается на объекте axuielementObject, представляющем приложение, поиск ограничивается приложением.
  • Если этот метод вызывается на объекте axuielementObject, представляющем элемент системы, поиск не ограничивается каким-либо конкретным приложением. См. hs.axuielement.systemElementAtPosition.
Источник extensions/axuielement/libaxuielement.m строка 533
elementSearch
Signature hs.axuielement:elementSearch(callback, [criteria], [namedModifiers]) -> elementSearchObject
Type Method
Description

Поиск и создание таблицы элементов доступности для атрибутов и потомков этого объекта на основе заданных критериев.

Parameters
  • callback - функция (обычно обязательная), которая получит результаты этого поиска. Обратный вызов должен принимать три аргумента и не возвращать значение. Аргументами функции обратного вызова будут msg, строка, указывающая, как закончился поиск, и results, элементSearchObject, содержащий запрошенные результаты, и количество добавленных элементов в результаты (см. count в namedModifiers). msg будет "completed", если поиск завершился нормально, или строка, начинающаяся с "**", если он был прерван преждевременно (подробнее см. в разделах Returns: и Notes:).
  • criteria - необязательная функция, которая должна принимать один аргумент (текущий проверяемый элемент) и возвращать true, если элемент должен быть включен в результаты, или false, если он должен быть исключен. См. hs.axuielement.searchCriteriaFunction для создания функции поиска, использующей hs.axuielement:matchesCriteria для оценки.
  • namedModifiers - необязательная таблица, определяющая пары ключ-значение, которые дополнительно изменяют или контролируют поиск. Эта таблица может содержать 0 или более следующих ключей:
    • count - необязательное целое число, по умолчанию math.huge, определяющее максимальное количество совпадений для сбора перед завершением поиска и вызовом обратного вызова. Вы можете продолжить поиск, чтобы найти дополнительные элементы, вызвав elementSearchObject:next() (описано ниже в разделе Returns) на возвращаемом значении этого метода или на аргументе результатов, переданном в обратный вызов.
    • depth - необязательное целое число, по умолчанию math.huge, определяющее максимальное количество шагов (потомков) от исходного элемента доступности, которые поиск должен посетить. Если вы знаете, что ваши искомые элементы находятся относительно близко к исходному элементу, установка этого значения на меньшее значение может значительно ускорить поиск.
    • Ниже перечисленные ключи также распознаются, но могут повлиять на скорость поиска, отзывчивость Hammerspoon или формат результатов таким образом, который ограничивает дальнейшее фильтрование и не рекомендуется, за исключением случаев, когда вам это необходимо: * asTree - необязательный логический параметр, по умолчанию false и игнорируется, если criteria задан и не пуст, objectOnly равен true или count задан. Этот модификатор указывает, должны ли результаты поиска возвращаться как таблица массивов, содержащая подробности каждого элемента (false), или как дерево, в котором подробности корневого узла являются парами ключ-значение возвращаемой таблицы, а подробности дочерних элементов аналогичным образом описываются в подтаблицах, присоединенных к имени атрибута, к которому они относятся (true). Этот формат предназначен в первую очередь для отладки и исследовательских целей и может не быть организован для удобной программной оценки. * includeParents - логический параметр, по умолчанию false, указывающий, следует ли рассматривать родительские атрибуты (AXParent и AXTopLevelUIElement) во время поиска. Обратите внимание, что в большинстве случаев установка этого значения в true приведет к обходу всей структуры доступности для целевого приложения и может значительно замедлить поиск. * noCallback - необязательный логический параметр, по умолчанию false и игнорируется, если callback не nil, позволяющий задать nil в качестве обратного вызова, если он установлен в true. Эта функция требует установки этого именованного аргумента в true и указания поля обратного вызова как nil, поскольку запуск запроса с элемента, имеющего много потомков, **БУДЕТ** блокировать Hammerspoon и замедлять отзывчивость вашего компьютера (в крайних случаях я видел блокировку более 5 минут) и должна использоваться *только* тогда, когда вы знаете, что начинаете с элемента, близкого к концу иерархии элементов. * objectOnly - необязательный логический параметр, по умолчанию true, указывающий, будет ли каждый результат в окончательной таблице элементом доступности, обнаруженным (true), или таблицей, содержащей подробности об элементе, включая имена атрибутов, действия и т. д. для элемента (false). Этот последний формат предназначен в первую очередь для отладки и исследовательских целей и может не быть организован для удобной программной оценки.
Returns
  • элементSearchObject, который содержит метаметоды, позволяющие проверить, завершился ли процесс, и отменить его досрочно, если это необходимо. Методы включают:
    • elementSearchObject:cancel([reason]) - отменяет текущий поиск и вызывает обратный вызов с частичными результатами, уже собранными. Если вы указали reason, аргумент msg для обратного вызова будет ** <reason>; в противном случае он будет "** cancelled".
    • elementSearchObject:isRunning() - возвращает true, если поиск в настоящее время выполняется, или false, если он завершился или был отменен.
    • elementSearchObject:matched() - возвращает целое число, определяющее количество элементов, которые уже были найдены и соответствуют заданной функции критерия.
    • elementSearchObject:runTime() - возвращает целое число, определяющее количество секунд, потраченных на выполнение этого поиска. Обратите внимание, что это *не* точное измерение того, сколько времени займет каждый поиск, так как время сильно зависит от того, сколько другой активности происходит внутри Hammerspoon и на компьютере пользователя. Возобновление отмененного поиска или поиска, который вызвал обратный вызов, потому что он достиг count элементов с методом next (описанным ниже), приведет к тому, что это число снова начнет увеличиваться, чтобы предоставить кумулятивную сумму времени, потраченного на выполнение поиска; время между вызовом обратного вызова и вызовом метода next не включается.
    • elementSearchObject:visited() - возвращает целое число, определяющее количество элементов, проверенных во время поиска до сих пор.
    • Если asTree имеет значение false или не указано, доступны следующие дополнительные методы:
      • elementSearchObject:filter(criteria, [callback]) -> filterObject
        • возвращает новую таблицу, содержащую элементы в результатах поиска, которые соответствуют заданному критерию.
          • criteria - обязательная функция, которая должна принимать один аргумент (текущий рассматриваемый элемент) и возвращать true, если элемент должен быть включён в результаты, или false, если он должен быть исключён. См. hs.axuielement.searchCriteriaFunction для создания функции поиска, использующей hs.axuielement:matchesCriteria для оценки.
          • callback - необязательный обратный вызов, который должен принимать два аргумента и не возвращать значение. Если обратный вызов указан, обратный вызов получит два аргумента: сообщение о том, как закончился обратный вызов (формат сообщения соответствует стилю, определённому для этого метода), и filterObject, который содержит соответствующие элементы.
        • Возвращаемый filterObject этим методом и переданный в обратный вызов, если он определен, будет поддерживать следующие методы, как определено здесь: cancel, filter, isRunning, matched, runTime, и visited.
      • elementSearchObject:next() - если поиск был отменён или достиг заданного количества совпадений, этот метод продолжит поиск с того места, на котором он остановился. ElementSearchObject, возвращённый при следующем вызове обратного вызова, будет содержать до count добавленных элементов к существующим результатам (вызовы next являются кумулятивными для общих результатов, захваченных в elementSearchObject). Третьим аргументом обратного вызова будет количество элементов, *добавленных* к результатам поиска, а не количество элементов *в* результатах поиска.
Notes
  • Этот метод использует сопрограммы, чтобы сохранить Hammerspoon отзывчивым, но может быть медленным для завершения, если includeParents имеет значение true, если вы не указали depth, или если вы начинаете поиск с элемента, имеющего много потомков (например, элемента приложения для веб-браузера). Это полностью зависит от того, сколько активных элементов доступности определяет целевое приложение, и от того, с чего вы начинаете свой поиск, и не может быть надёжно определено заранее, поэтому вам может потребоваться экспериментировать, чтобы найти наилучший баланс для ваших конкретных требований.
  • Выполняемый поиск является поиском в ширину, поэтому, как правило, элементы в таблице результатов, расположенные раньше, будут «ближе» в иерархии доступности к исходной точке, чем последующие элементы.
  • Возвращаемый elementSearchObject этим методом и результаты, переданные в качестве второго аргумента функции обратного вызова, являются одним и тем же объектом — вы можете использовать любой из них в своём коде в зависимости от того, что имеет больше смысла. Результаты, которые соответствуют функции критерия, добавляются в elementSearchObject по мере их обнаружения, поэтому, если вы изучите возвращаемый объектом/таблицей объект и определите, что нашли требуемый элемент или элементы до вызова обратного вызова, вы можете безопасно вызвать метод отмены, чтобы досрочно завершить поиск.
    • Исключением из этого является случай, когда asTree имеет значение true, objectsOnly имеет значение false, а критерии поиска — nil — см. hs.axuielement:buildTree. В этом случае результаты, переданные в обратный вызов, будут равны elementSearchObject[1].
  • Если objectsOnly задано как false, может потребоваться некоторое время после вызова cancel для сопоставления таблиц атрибутов элементов с дочерними элементами в наборе результатов — это побочный продукт необходимости перебора результатов для сопоставления всех экземпляров каждого элемента с его таблицей атрибутов.
  • hs.axuielement:allDescendantElements — это синтаксический сахар для hs.axuielement:elementSearch(callback, { [includeParents = withParents] })
  • hs.axuielement:buildTree — это синтаксический сахар для hs.axuielement:elementSearch(callback, { objectOnly = false, asTree = true, [depth = depth], [includeParents = withParents] })
Source extensions/axuielement/axuielement.lua line 766
isAttributeSettable
Signature hs.axuielement:isAttributeSettable(attribute) -> boolean | nil, errString
Type Method
Description

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

Parameters
  • attribute - имя атрибута, как указано в hs.axuielement:attributeNames.
Returns
  • булево значение, указывающее, можно ли изменить значение параметра, или nil и строка об ошибке, если произошла ошибка доступности
Source extensions/axuielement/libaxuielement.m строка 421
isValid
Signature hs.axuielement:isValid() -> boolean | nil, errString
Type Method
Description

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

Parameters
  • None
Returns
  • булево значение, указывающее, является ли объект доступности по-прежнему допустимым, или nil и строка об ошибке, если произошла ошибка доступности
Notes
  • объект доступности может стать недопустимым по различным причинам, включая, но не ограничиваясь, невозможностью доступа к элементу (например, элемент, ссылающийся на окно или одного из его потомков, которое было закрыто) или завершением работы приложения.
Source extensions/axuielement/libaxuielement.m строка 447
matchesCriteria
Signature hs.axuielement:matchesCriteria(criteria) -> boolean
Type Method
Description

Возвращает true, если axuielementObject соответствует заданным критериям, или false, если не соответствует.

Parameters
  • criteria - критерии для сравнения с объектом доступности
Returns
  • true, если axuielementObject соответствует критериям, false, если не соответствует.
Notes
  • аргумент criteria должен быть одним из следующих:

    • одиночная строка, определяющая значение атрибута AXRole элемента, которое должно соответствовать для положительного совпадения

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

    • таблица пар ключ-значение, определяющая более сложные критерии. Таблица должна быть определена следующим образом:

      • должны быть указаны один или несколько из следующих пунктов (хотя все указанные должны совпадать):
        • attribute -- строка или таблица строк, определяющая атрибуты, которые должен поддерживать элемент.
        • action -- строка или таблица строк, определяющая действия, которые элемент должен уметь выполнять.
        • parameterizedAttribute -- строка или таблица строк, определяющая параметризованные атрибуты, которые должен поддерживать элемент.
      • если указан ключ attribute, можно использовать одно из следующих для определения конкретного значения, которому атрибут должен соответствовать для положительного совпадения. Не должно быть более одного из них. Если ни один из них не указан, тогда необходимым условием является только наличие атрибутов, указанных в attribute.
        • value -- значение или таблица значений, которые должен иметь указанный атрибут. Если это таблица, то для положительного совпадения должно соответствовать только одно из значений. Обратите внимание, что если вы указали более одного атрибута с ключом attribute, вам необходимо предоставить хотя бы одно значение для каждого атрибута в этой таблице (порядок не имеет значения, но совпадение завершится неудачей, если какой-либо атрибут не совпадает ни с одним предоставленным значением).
          • при указании значения, которое само по себе является таблицей с ключами (например, frame, size, url, color и т. д.), вы обязаны указать значение или значения в виде таблицы таблиц, например, { { y = 22 } }.
            • только те ключи, которые указаны в значении, проверяются на равенство (или сопоставление с образцом). Значения, которые присутствуют в значении атрибута, но не указаны в значении сравнения, игнорируются (т. е. в предыдущем примере y = 22 будет проверяться только компонент y атрибута AXFrame — значения x, h, и w будут проигнорированы).
            • Для числовых компонентов значений, например, 22 в предыдущем примере, по умолчанию используется сравнение на равенство. Вы можете изменить это с помощью ключа comparison , описанного ниже в необязательных ключах.
            • Для возможных ключей при попытке сопоставить цвет, см. документацию для hs.drawing.color.
            • Для возможных ключей при попытке сопоставить URL, используйте url = <string> и/или filePath = <string>. Строка для указанного ключа таблицы будет сравниваться в соответствии с необязательным ключом pattern , описанным ниже.
          • при указании значения, которое само по себе является таблицей значений (например, список axuielementObjects), вы обязаны указать значение или значения в виде таблицы таблиц, например, { { obj1, obj2 } }.
            • Порядок элементов, предоставленных в значении сравнения, не имеет значения — это проверяет только наличие в значении атрибута.
            • Проверка выполняется только на включение — значение атрибута может содержать и другие элементы, но должно содержать те, которые указаны в значении сравнения.
        • nilValue -- булево значение, указывающее, что атрибуты не должны иметь присвоенного значения (true) или могут иметь любое значение, кроме nil (false). Если указан ключ value, этот ключ игнорируется. Обратите внимание, что это относится ко всем атрибутам, указанным с ключом attribute.
      • следующие являются необязательными ключами и не требуются:
        • pattern -- булево значение, по умолчанию false, указывающее, должны ли совпадения строк для значений атрибутов оцениваться с использованием string.match (true) или как точные совпадения (false). См. руководство по Lua, раздел 6.4.1 (help.lua._man._6_4_1 в консоли Hammerspoon). Если ключ value не задан, этот ключ игнорируется.
        • invert -- булево значение, по умолчанию false, указывающее инвертированную логику для результата критериев — если это true, и критерии соответствуют, оценивать критерии как false; в противном случае оценивать как true.
        • comparison -- строка, по умолчанию "==", указывающая сравнение, используемое при сравнении числовых значений. Возможные строки сравнения: "==" для равенства, "<" для меньше, "<=" для меньше или равно, ">" для больше, ">=" для больше или равно, или "~=" для не равно.
    • массив таблиц по одному или нескольким таблицам ключ-значение, как описано непосредственно выше; элемент должен соответствовать всем таблицам критериев, указанным индивидуально (логическое И).

  • Этот метод используется функцией hs.axuielement.searchCriteriaFunction для создания функций критериев, совместимых с hs.axuielement:elementSearch.

Source extensions/axuielement/axuielement.lua строка 265
parameterizedAttributeNames
Signature hs.axuielement:parameterizedAttributeNames() -> table | nil, errString
Type Method
Description

Возвращает список всех параметризованных атрибутов, поддерживаемых указанным объектом доступности.

Parameters
  • None
Returns
  • массив имен всех параметризованных атрибутов, поддерживаемых axuielementObject, или nil и строка об ошибке, если произошла ошибка доступности
Source extensions/axuielement/libaxuielement.m строка 391
parameterizedAttributeValue
Signature hs.axuielement:parameterizedAttributeValue(attribute, parameter) -> value | nil, errString
Type Method
Description

Возвращает значение параметризованного атрибута объекта доступности.

Parameters
  • attribute - имя атрибута, как указано в hs.axuielement:parameterizedAttributeNames.
  • parameter - параметр, необходимый для параметризованного атрибута.
Returns
  • текущее значение параметризованного атрибута, nil, если параметризованный атрибут не имеет значения, или nil и строка об ошибке, если произошла ошибка доступности
Notes
  • Конкретный параметр, необходимый для каждого параметризованного атрибута, отличается и часто зависит от приложения, поэтому требуется некоторое экспериментирование. Сведения о выявленных типах параметров и предположения о некоторых, которые еще исследуются, будут предоставлены в Википедии Hammerspoon, надеюсь, вскоре после того, как этот модуль станет частью выпуска Hammerspoon.
Source extensions/axuielement/libaxuielement.m строка 582
END_OF_DOCUMENT_MARKER
путь
Подпись hs.axuielement:path() -> table
Тип Метод
Описание

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

Параметры
  • Никаких
Возвращаемое значение
  • таблица, содержащая этот объект и 0 или более родительских объектов, представляющих путь от корневого объекта до этого элемента.
Примечания
  • Этот объект всегда будет последним элементом в таблице (например, в позиции table[#table]) с его непосредственным родителем в позиции #table - 1, и так далее, пока не будет достигнут корневой объект для этого элемента в позиции 1.
  • Объект axuielement, представляющий приложение или системный объект, является своим собственным корневым объектом и вернет таблицу, содержащую только себя (то есть #table будет равно 1)
Источник extensions/axuielement/axuielement.lua строка 211
performAction
Подпись hs.axuielement:performAction(action) -> axuielement | false | nil, errString
Тип Метод
Описание

Запрашивает, чтобы указанный объект доступности выполнил указанное действие.

Параметры
  • action - имя действия, как указано в hs.axuielement:actionNames.
Возвращаемое значение
  • если запрошенное действие было принято целевым объектом, возвращает axuielementObject; если запрошенное действие было отклонено, возвращает false; в противном случае возвращает nil и строку ошибки, если произошла ошибка доступности
Примечания
  • Значение возврата только указывает на успех или неудачу, но не гарантирует его. Принимающее приложение может иметь внутреннюю логику, которая предотвращает выполнение действия в данный момент по какой-либо причине, даже если этот метод возвращает успех (axuielementObject). В свою очередь, запрошенное действие может потребовать ответа от пользователя и, следовательно, показаться зависшим, что приведет к тому, что этот метод вернет false или nil.
Источник extensions/axuielement/libaxuielement.m строка 503
pid
Подпись hs.axuielement:pid() -> integer | nil, errString
Тип Метод
Описание

Возвращает идентификатор процесса, связанный с указанным объектом доступности.

Параметры
  • Никаких
Возвращаемое значение
  • идентификатор процесса приложения, к которому в конечном итоге принадлежит объект доступности, или nil и строка ошибки, если произошла ошибка доступности
Источник extensions/axuielement/libaxuielement.m строка 478
setAttributeValue
Подпись hs.axuielement:setAttributeValue(attribute, value) -> axuielementObject | nil, errString
Тип Метод
Описание

Устанавливает атрибут объекта доступности в указанное значение.

Параметры
  • attribute - имя атрибута, как указано в hs.axuielement:attributeNames.
  • value - значение, которое нужно назначить атрибуту
Возвращаемое значение
  • объект axuielement при успехе; nil и строка ошибки, если атрибут не может быть установлен или произошла ошибка доступности.
Источник extensions/axuielement/libaxuielement.m строка 617
setTimeout
Подпись hs.axuielement:setTimeout(value) -> axuielementObject | nil, errString
Тип Метод
Описание

Устанавливает значение таймаута, используемое при запросах доступности, выполненных из этого элемента.

Параметры
  • value - количество секунд для нового значения таймаута. Должно быть 0 или положительным.
Возвращаемое значение
  • объект axuielement или nil и строка ошибки, если произошла ошибка доступности
Примечания
  • Чтобы изменить глобальный таймаут, влияющий на все запросы к элементам, у которых нет заданного таймаута, используйте этот метод для системного элемента (см. hs.axuielement.systemWideElement.
  • Изменение значения таймаута для объекта axuielement изменяет значение только для этого конкретного элемента — другие объекты axuielement, которые могут ссылаться на тот же элемент доступности, не затрагиваются.
  • Установка значения в 0.0 сбрасывает таймаут — если применён к системному объекту systemWideElement, глобальное значение по умолчанию будет сброшено до значения по умолчанию; если применён к другому объекту axuielement, таймаут будет сброшен до текущего глобального значения, применённого к системному элементу.
Источник extensions/axuielement/libaxuielement.m строка 710

© 2014–2017 Hammerspoon contributors
Licensed under the MIT License.
https://www.hammerspoon.org/docs/hs.axuielement.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API