首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Google Chrome accessible树缓存问题与UI自动化

Google Chrome accessible树缓存问题与UI自动化
EN

Stack Overflow用户
提问于 2015-05-25 17:19:41
回答 2查看 5.1K关注 0票数 154

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

要再现它,请执行以下操作:

通过以下方式启用渲染器辅助功能:或通过在UI自动化模式下的"chrome://accessibility".

  1. Go to http://en.wikipedia.org/wiki/Google
  2. Open inspect.exe设置全局辅助功能(从
    1. 工具包),查找“相关文章的链接”元素。回到Chrome,向下滚动直到底部的"Links to related
    2. “元素被标记为off screen

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

  1. 将缩放设置为90%,然后将其设置回100%(非常非常丑陋的方式)
  2. 关闭辅助功能,然后在way中打开

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

我尝试过的:

PInvoke/Redrawwindow

  • Build的
  • 调整窗口大小一个chrome扩展并按需强制缩放至100%:chrome.tabs.setZoom(null, 0); (工作,但会使窗口闪烁和减慢)

所有这些都不能正常工作。

编辑:在Windows7下测试谷歌Chrome40.XX,41.XX,42.XX,43.XX,44.XX,45.XX,46.XX,47.XX.Dev,48.XX.Dev。

EN

回答 2

Stack Overflow用户

发布于 2016-01-21 10:15:47

在简单页面中滚动被优化为不需要来自渲染器的计算。只需要合成器和GPU来滚动,因此只从渲染器更新的渲染树仍然是相同的。

要求渲染器在滚动期间遍历DOM并更新可访问性树,这与几年来平滑滚动的努力背道而驰,特别是对于触摸设备,因此我认为您不会从错误修复中获得支持。

我认为你的扩展想法是最好的(虽然丑陋)折衷方案。相反,改变缩放比例,对页面(或DOM)进行小的改动可能是更好的解决方案。例如,尝试添加一个z顺序较低的不可见(或接近不可见)元素。您还需要对突变进行速率控制,使其每秒只发生1次,甚至更少发生。

票数 1
EN

Stack Overflow用户

发布于 2015-11-24 15:29:22

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30434961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档