3

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

AXChildrenAXWebArea空なので、 UI要素内の HTML 要素にアクセスできません。どうすればアクセスできますか?

4

1 に答える 1

0

Web コンテンツがロードされていますか? Safariでちょっとした実験をしただけです。[このページ][1] が読み込まれると、アクセシビリティ インスペクターは 83 項目の AXChildren と 121 項目の AXLinkUIElements を示しました。しかし、about:blank がロードされたタブに切り替えると、両方のアイテムが 0 個表示されました。

私の開発環境では、Accessibility Inspector アプリは/Developer/Applications/Utilities/Accessibility\ Tools/.

[1]:アクセシビリティ API: AXWebArea 子要素 (または HTML ソース)、つまりまさにこのページ。

于 2011-12-27T09:40:54.437 に答える