API доступности: дочерние элементы AXWebArea (или источник HTML) - PullRequest
2 голосов
/ 22 ноября 2011

Мне нужно получить информацию из стороннего приложения, используя Cocoa Accessibility API.Стороннее приложение использует WebView для отображения своего пользовательского интерфейса (AXWebArea роль).Этот AXUIElement не имеет детей.

 if ([role isEqualToString:@"AXWebArea"])
 {
        NSArray *names;
        AXUIElementCopyAttributeNames(foundElement, (CFArrayRef *)&names);

        NSLog(@"%@", names);
 }

Этот код выводит:

AXRole,
AXSubrole,
AXRoleDescription,
AXChildren,
AXHelp,
AXParent,
AXPosition,
AXSize,
AXTitle,
AXDescription,
AXValue,
AXFocused,
AXEnabled,
AXWindow,
AXSelectedTextMarkerRange,
AXStartTextMarker,
AXEndTextMarker,
AXVisited,
AXLinkedUIElements,
AXSelected,
AXBlockQuoteLevel,
AXTopLevelUIElement,
AXLinkUIElements,
AXLoaded,
AXLayoutCount,
AXLoadingProgress,
AXURL

AXChildren пусто, поэтому я не могу получить доступ к элементам HTML внутри элемента AXWebArea UI.Как я могу получить к ним доступ?

1 Ответ

0 голосов
/ 27 декабря 2011

Вы уверены, что веб-контент загружен?Я только что провел небольшой эксперимент с Safari.При загрузке [этой страницы] [1] инспектор специальных возможностей показал AXChildren с 83 элементами и элементы AXLinkUIE с 121 элементом.Но когда я переключился на вкладку с загруженной информацией about: blank, она показала 0 элементов для обоих.

В моей среде разработки приложение Accessibility Inspector имеет /Developer/Applications/Utilities/Accessibility\ Tools/.

[1] API специальных возможностей: дочерние элементы AXWebArea (или источник HTML) , т.е. эта самая страница.

...