Проблема кеш-пам'яток дерев, доступних Google Chrome, за допомогою інтерфейсу автоматизації


154

Google Chrome не оновлює елементи доступності ( AutomationElement ), коли користувач прокручується вниз у браузері.

Щоб відтворити його:

  1. Увімкніть доступ до рендеріра за допомогою: "chrome --force-render-accessibility"або встановивши "Глобальна доступність" на "chrome://accessibility".
  2. Перейдіть на сторінку http://en.wikipedia.org/wiki/Google
  3. Відкрийте 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);(працюючи, але моргайте та сповільнюйте вікно)

Жодне з них не працює належним чином.

EDIT : Тестовано з Google Chrome 40.XX, 41.XX, 42.XX, 43.XX, 44.XX, 45.XX, 46.XX, 47.XX.Dev, 48.XX.Dev під Windows 7.


13
Ви повинні повідомити про це помилку доступності хрому в Windows: code.google.com/p/chromium/isissue/…
Саймон Мур'є

5
Чи можете ви поділитися деякою інформацією про те, що ви намагаєтеся зробити, коли вирішите проблему? можливо, є вирішення ...
DoronG,

@ Ksv3n, будь ласка, опублікуйте посилання на помилку, яку ви опублікували
Mauricio Gracia Gutierrez

@ Ksv3n Ви пробували те саме тестування в іншому браузері? Firefox може бути?
Псевдоай

@Emzor дякую за те, що намагаєтесь внести зміни, але утримайтеся від тривіальних змін, щоб посилання виглядали «кращими». Іноді посилання краще відображаються у повному обсязі, щоб користувач міг скопіювати та вставити його за потреби.
gitsitgo

Відповіді:


1

Прокрутка на простих сторінках оптимізована, щоб не вимагати обчислень від рендерінга. Для прокрутки потрібні лише композитор та графічний процесор, тому дерево візуалізації, оновлене лише від рендерінга, залишається однаковим.

Вимагати від рендеріра переходити DOM та оновлювати дерево Доступності під час прокрутки працює всупереч кількарічним зусиллям плавного прокручування, спеціально для сенсорних пристроїв, тому я не думаю, що ви збираєтеся отримати тягу на виправлення помилок.

Ваша ідея про розширення, я думаю, є найкращим (хоча й потворним) компромісом. Але краще, що зміни масштабу, невелика мутація сторінки (або DOM) може бути кращим рішенням. Спробуйте, наприклад, додати невидимий (або майже такий) елемент із низьким z-порядком. Вам також потрібно буде контролювати мутацію, так що це відбувається лише 1 раз на секунду або навіть рідше.


1
Порушення доступності, коли це явно запитується в конфігурації чи параметрах, в ім'я більш плавного прокручування здається поганим.
manuell

1
@manuell, тому розширення існують. Коли ваші пріоритети суперечать пріоритетам браузера, ви можете перейняти їх. Ваш клієнт встановлює сигнал розширення, він погоджується з вами, а не з командою Chrome.
AlienRancher

-1

Багатопроцесова архітектура Chrome відрізняється від архітектури будь-якого іншого браузера. Для безпеки основний інтерфейс браузера знаходиться в одному процесі, а веб-сторінки запускаються в окремих процесах візуалізації (як правило, по одній на вкладку). Процеси рендерінгу є єдиними з представленням DOM веб-сторінки, а тому всією інформацією про доступність, але процесам візуалізації спеціально не дозволяється взаємодіяти з операційною системою (надсилання або отримання подій або повідомлень) - зокрема, рендерінг процеси не можуть надсилати або отримувати події доступності.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.