Question

I need to get information from the third-party application using Cocoa Accessibility API. The third-party application uses WebView to show its user interface (AXWebArea role). This AXUIElement has no children.

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

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

This code outputs:

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 is empty, so I cannot access HTML elements inside the AXWebArea UI element. How can I access them?

Was it helpful?

Solution

Are you sure the web content is loaded? I just did a little experiment with Safari. With [this page][1] loaded, the Accessibility Inspector showed AXChildren with 83 items and AXLinkUIElements with 121 items. But when I switched to a tab with about:blank loaded, it showed 0 items for both.

In my development environment the Accessibility Inspector app is at /Developer/Applications/Utilities/Accessibility\ Tools/.

[1]: Accessibility API: AXWebArea children elements (or HTML source), i.e. this very page.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top