使用UI自动化的Google Chrome访问树缓存问题

Per*_*t28 155 c# pinvoke accessibility google-chrome ui-automation

当用户在浏览器中向下滚动时,Google Chrome不会刷新辅助功能元素(AutomationElement).

重现它:

  1. 使用以下方式启用渲染器辅助功能: "chrome --force-render-accessibility"或通过设置Global Accessibility at "chrome://accessibility".
  2. 转到http://en.wikipedia.org/wiki/Google
  3. 在UI自动化模式下打开inspect.exe(从Windows Kits),查找"链接到相关文章"元素.
  4. 回到Chrome,向下滚动,直到底部显示"链接到相关文章"
  5. 屏幕上标有"相关文章的链接"元素

我找到了一些可以强制Chrome刷新它的手动解决方案:

  1. 将缩放设置为90%然后将其设置为100%(非常非常难看)
  2. 关闭可访问性,然后打开 chrome://accessibility/

我正在寻找的是能够以编程方式执行这些操作之一,或任何可以使Chrome刷新其缓存树的操作.


我尝试过的:

  • 调整窗口大小 PInvoke/MoveWindow
  • 重绘窗口 PInvoke/Redrawwindow
  • 构建镀铬扩展并按需强制缩放至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

Chrome 的多进程架构与任何其他浏览器不同。为了安全起见,主浏览器 UI 位于一个进程中,而网页则在单独的渲染器进程中运行(通常每个选项卡一个)。渲染器进程是唯一具有网页 DOM 表示形式以及所有可访问性信息的进程,但渲染器进程特别不允许与操作系统交互(发送或接收事件或消息) - 特别是渲染器进程无法发送或接收可访问性事件。