UI 자동화와 관련된 Chrome 접근 가능한 트리 캐시 문제


154

Chrome은 사용자가 브라우저에서 아래로 스크롤 할 때 내게 필요한 옵션 요소 ( AutomationElement )를 새로 고치지 않습니다 .

그것을 재현하려면 :

  1. 을 사용 "chrome --force-render-accessibility"하거나에서 전역 액세스 가능성을 설정하여 렌더러 액세스 가능성을 활성화하십시오 "chrome://accessibility".
  2. http://en.wikipedia.org/wiki/Google로 이동
  3. UI 자동화 모드 (Windows 키트)에서 inspect.exe 를 열고 "관련 기사에 대한 링크"요소를 찾으십시오.
  4. Chrome으로 돌아와 하단의 '관련 기사 링크'가 표시 될 때까지 아래로 스크롤
  5. "관련 기사 링크"요소가 화면에 표시되지 않음

Chrome에서 강제로 새로 고칠 수있는 몇 가지 수동 솔루션을 찾았습니다.

  1. 확대 / 축소를 90 %로 설정 한 다음 다시 100 %로 설정하십시오 (매우 추악한 방법).
  2. 내게 필요한 옵션을 껐다 켜십시오 chrome://accessibility/

내가 찾고있는 것은 이러한 작업 중 하나를 프로그래밍 방식으로 수행하거나 Chrome에서 캐시 트리를 새로 고칠 수있는 작업입니다.


내가 시도한 것 :

  • 창 크기 조정 PInvoke/MoveWindow
  • 창 다시 그리기 PInvoke/Redrawwindow
  • 크롬 확장 프로그램을 구축하고 필요에 따라 100 % 확대 / 축소 :( chrome.tabs.setZoom(null, 0);작동하지만 깜박임 및 속도 저하)

이들 중 어느 것도 제대로 작동하지 않습니다.

편집 : Windows 7에서 Chrome 40.XX, 41.XX, 42.XX, 43.XX, 44.XX, 45.XX, 46.XX, 47.XX.Dev, 48.XX.Dev로 테스트되었습니다.


13
: 당신은 Windows에서 크롬의 접근성 버그에게보고해야 code.google.com/p/chromium/issues/...
사이먼 Mourier

5
문제를 해결 한 후 수행하려는 작업에 대한 정보를 공유 할 수 있습니까? 아마도 해결 방법이있을 것입니다.
DoronG

@ Ksv3n 당신이 게시 된 것을 버그에 링크를 게시하시기 바랍니다
마우 그라시아 구티에레즈

@ Ksv3n 다른 브라우저에서 같은 테스트를 해 보셨습니까? Firefox일까요?
PseudoAj

@Emzor는 수정을 시도해 주셔서 감사하지만 링크를 "더 나은"것처럼 보이게하기 위해 사소한 수정은 삼가 주시기 바랍니다. 때로는 링크가 전체에 더 잘 표시되어 필요한 경우 사용자가 복사하여 붙여 넣을 수 있습니다.
gitsitgo

답변:


1

간단한 페이지에서의 스크롤은 렌더러에서 계산할 필요가 없도록 최적화되어 있습니다. 컴포 지터와 GPU 만 스크롤해야하므로 렌더러에서만 업데이트되는 렌더 트리는 여전히 동일합니다.

렌더러가 DOM을 탐색하고 스크롤하는 동안 접근성 트리를 업데이트하도록 요구하는 것은 몇 년 동안 터치 장치에 대한 부드러운 스크롤링 노력과 반대로 작동하므로 버그 수정에 대한 견인력을 얻지 못할 것이라고 생각합니다.

확장에 대한 당신의 생각은 (추악한) 최선의 타협이라고 생각합니다. 그러나 오히려 확대 / 축소를 변경하고 페이지 (또는 DOM)를 약간만 변경하는 것이 더 나은 솔루션 일 수 있습니다. 예를 들어 z 순서가 낮은 보이지 않는 (또는 거의) 요소를 추가하십시오. 또한 돌연변이를 평가하여 초당 1 회 또는 그보다 덜 자주 발생하도록해야합니다.


1
구성 또는 매개 변수에서 smother scrolling 이름으로 명시 적으로 요청하면 액세스 가능성을 깨뜨릴 수 없습니다.
manuell

1
확장이 존재하는 이유는 @manuell입니다. 우선 순위가 브라우저 우선 순위와 반대로 실행되면 대체 할 수 있습니다. 고객이 Chrome 팀이 아닌 귀하와 동의하는 확장 신호를 설치하는 고객
AlienRancher

-1

Chrome의 다중 프로세스 아키텍처는 다른 브라우저와 다릅니다. 보안을 위해 기본 브라우저 UI는 하나의 프로세스에 있으며 웹 페이지는 별도의 렌더러 프로세스 (일반적으로 탭당 하나)에서 실행됩니다. 렌더러 프로세스는 웹 페이지의 DOM 및 모든 접근성 정보를 나타내는 유일한 프로세스이지만 렌더러 프로세스는 특히 운영 체제 (이벤트 또는 메시지 보내기 또는 받기)와 상호 작용할 수 없습니다. 특히 렌더러 프로세스는 내게 필요한 옵션 이벤트를 보내거나받을 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.