it-swarm.com.de

Google Chrome zugänglich Baum-Cache-Problem mit UI-Automatisierung

Google Chrome aktualisiert keine Eingabehilfen ( AutomationElement ), wenn ein Benutzer im Browser einen Bildlauf nach unten durchführt.

Um es zu reproduzieren:

  1. Aktivieren Sie die Renderer-Barrierefreiheit mit: "chrome --force-render-accessibility" Oder indem Sie die globale Barrierefreiheit auf "chrome://accessibility" Setzen.
  2. Gehen Sie zu http://en.wikipedia.org/wiki/Google
  3. Öffnen Sie inspect.exe im UI-Automatisierungsmodus (aus Windows Kits) und suchen Sie nach dem Element "Links zu verwandten Artikeln".
  4. Kehren Sie zu Chrome zurück und scrollen Sie nach unten, bis "Links zu verwandten Artikeln" unten angezeigt wird
  5. Das Element "Links zu verwandten Artikeln" ist außerhalb des Bildschirms markiert

Ich habe einige manuelle Lösungen gefunden, die die Aktualisierung von Chrome erzwingen können:

  1. Stellen Sie Zoom auf 90% und dann wieder auf 100% ein (sehr, sehr hässlich)
  2. Barrierefreiheit ausschalten und in chrome://accessibility/ Einschalten

Ich suche nach der Möglichkeit, eine dieser Operationen programmgesteuert auszuführen, oder nach einer Operation, mit der Chrome den Cache-Baum aktualisieren kann.


Was ich versucht habe:

  • Fenstergröße ändern mit PInvoke/MoveWindow
  • Fenster neu zeichnen mit PInvoke/Redrawwindow
  • Erstellen Sie eine chrome -Erweiterung und erzwingen Sie bei Bedarf den Zoom auf 100%: chrome.tabs.setZoom(null, 0); (funktioniert, blinkt jedoch und verlangsamt das Fenster)

Keines davon funktioniert ordnungsgemäß.

[~ # ~] bearbeiten [~ # ~] : Getestet mit Google Chrome 40.XX, 41.XX, 42. XX, 43.XX, 44.XX, 45.XX, 46.XX, 47.XX.Dev, 48.XX.Dev unter Windows 7.

155
Perfect28

Das Scrollen in einfachen Seiten ist so optimiert, dass keine Berechnung vom Renderer erforderlich ist. Nur der Compositor und die GPU werden zum Scrollen benötigt, daher bleibt der Render-Baum, der nur vom Renderer aktualisiert wird, derselbe.

Das Erfordernis, dass der Renderer während eines Bildlaufs das DOM durchläuft und den Eingabehilfenbaum aktualisiert, steht im Widerspruch zu den jahrelangen Bemühungen um einen reibungslosen Bildlauf, insbesondere für Touch-Geräte.

Ihre Vorstellung von einer Erweiterung ist meiner Meinung nach der beste (wenn auch hässliche) Kompromiss. Aber das Ändern des Zooms, eine kleine Mutation der Seite (oder des DOM) könnte eine bessere Lösung sein. Versuchen Sie beispielsweise, ein unsichtbares (oder fast unsichtbares) Element mit einer niedrigen Z-Ordnung hinzuzufügen. Sie müssen die Mutation auch mit einer Rate steuern, damit sie nur 1 Mal pro Sekunde oder noch seltener auftritt.

1
AlienRancher