UI オートメーションによる Google Chrome のアクセス可能なツリー キャッシュの問題 質問する

UI オートメーションによる Google Chrome のアクセス可能なツリー キャッシュの問題 質問する

Google Chromeはアクセシビリティ要素を更新しません(オートメーション要素) が表示されます。

再現するには:

  1. : を使用する"chrome --force-render-accessibility"か、 でグローバル アクセシビリティをオンに設定して、レンダラーのアクセシビリティを有効にします"chrome://accessibility"
  2. へ移動http://en.wikipedia.org/wiki/Google
  3. 開ける検査.exeUI オートメーション モード (Windows キットから) で、「関連記事へのリンク」要素を探します。
  4. Chromeに戻り、下部の「関連記事へのリンク」が表示されるまで下にスクロールします。
  5. 「関連記事へのリンク」要素が画面外にマークされています

Chrome を強制的に更新できる手動の解決策をいくつか見つけました:

  1. ズームを 90% に設定し、その後 100% に戻します (非常に醜い方法です)
  2. アクセシビリティをオフにしてからオンにするchrome://accessibility/

私が探しているのは、これらの操作のいずれかをプログラムで実行する機能、または Chrome のキャッシュ ツリーを更新できる操作です。


私が試したこと:

  • ウィンドウのサイズを変更するPInvoke/MoveWindow
  • ウィンドウを再描画PInvoke/Redrawwindow
  • Chrome 拡張機能を作成し、必要に応じて強制的に 100% にズームしますchrome.tabs.setZoom(null, 0);(動作しますが、ウィンドウが点滅して速度が低下します)

いずれも正常に動作していません。

編集: Windows 7 上の Google Chrome 40.XX、41.XX、42.XX、43.XX、44.XX、45.XX、46.XX、47.XX.Dev、48.XX.Dev でテスト済み。

ベストアンサー1

シンプルなページでのスクロールは、レンダラーからの計算を必要としないように最適化されています。スクロールに必要なのはコンポジターと GPU のみなので、レンダラーからのみ更新されるレンダリング ツリーは同じままです。

レンダラーがスクロール中に DOM をトラバースしてアクセシビリティ ツリーを更新するように要求することは、特にタッチ デバイスでのスムーズなスクロールを実現するための数年にわたる取り組みに反するため、バグ修正が進むとは思えません。

拡張機能のアイデアは、最良の(ただし見苦しい)妥協案だと思います。ズームを変更するのではなく、ページ(または DOM)を少し変更する方がよい解決策かもしれません。たとえば、Z オーダーが低い非表示(またはほぼ非表示)の要素を追加してみてください。また、変更が 1 秒あたり 1 回またはそれ以下の頻度でしか発生しないように、変更のレートを制御する必要があります。

おすすめ記事