UI Otomasyonu ile Google Chrome erişilebilir ağaç önbellek sorunu


154

Bir kullanıcı tarayıcıda aşağı kaydırdığında Google Chrome erişilebilirlik öğelerini ( AutomationElement ) yenilemez .

Yeniden üretmek için:

  1. Oluşturucu erişilebilirliğini: ile "chrome --force-render-accessibility"veya adresindeki Global Erişilebilirlik'i ayarlayarak etkinleştirin "chrome://accessibility".
  2. Http://en.wikipedia.org/wiki/Google adresine gidin
  3. Uect Automation Mode'da (Windows Kits'ten ) inspect.exe dosyasını açın , "İlgili makalelere bağlantılar" öğesini bulun .
  4. Chrome'a ​​geri dönün, alttaki "İlgili makalelere bağlantılar" görünene kadar aşağı kaydırın
  5. "İlgili makalelere bağlantılar" öğesi ekran dışında işaretlenir

Chrome'u yenilemeye zorlayabilecek bazı manuel çözümler buldum:

  1. Yakınlaştırmayı% 90 olarak ayarlayın, sonra tekrar% 100'e ayarlayın (çok çirkin bir şekilde)
  2. Erişilebilirliği kapatıp tekrar açın chrome://accessibility/

Aradığım şey, bu işlemlerden birini programlı olarak veya Chrome'un önbellek ağacını yenilemesini sağlayacak herhangi bir işlemi yapma yeteneğidir.


Ne denedim:

  • Pencereyi yeniden boyutlandır PInvoke/MoveWindow
  • Pencereyi Yeniden Çiz PInvoke/Redrawwindow
  • Bir krom uzantısı oluşturun ve isteğe bağlı olarak% 100'e yakınlaştırmaya zorlayın: chrome.tabs.setZoom(null, 0);(çalışıyor ancak yanıp sönüyor ve pencereyi yavaşlatıyor)

Bunların hiçbiri düzgün çalışmıyor.

EDIT : Google Chrome 40.XX, 41.XX, 42.XX, 43.XX, 44.XX, 45.XX, 46.XX, 47.XX.Dev, 48.XX.Dev ile Windows 7 altında test edilmiştir.



5
Sorunu çözdükten sonra ne yapmaya çalıştığınızla ilgili bazı bilgileri paylaşabilir misiniz? belki bir çözüm var ...
DoronG

@ Ksv3n lütfen yayınladığınız hata bağlantısını gönderin
Mauricio Gracia Gutierrez

@ Ksv3n Başka bir tarayıcıda aynı testi yapmayı denediniz mi? Firefox olabilir mi?
PseudoAj

@Emzor, düzenleme yapmaya çalıştığınız için teşekkür eder, ancak bağlantıların "daha iyi" görünmesi için lütfen önemsiz düzenlemeler yapmaktan kaçının. Bazen bağlantılar tam olarak daha iyi gösterilir, böylece kullanıcı gerekirse kopyalayıp yapıştırabilir.
gitsitgo

Yanıtlar:


1

Basit sayfalarda kaydırma, oluşturucudan hesaplama gerektirmeyecek şekilde optimize edilmiştir. Yalnızca besteci ve GPU'nun kaydırılması gerekir, bu nedenle yalnızca oluşturucudan güncellenen oluşturma ağacı hala aynıdır.

Oluşturucunun DOM'da geçiş yapmasını ve bir kaydırma sırasında Erişilebilirlik ağacını güncellemesini istemek, birkaç yıl boyunca, özellikle dokunmatik cihazlar için düzgün kaydırma yapma çabasına aykırıdır, böylece bir hata düzeltmesinde çekiş yapacağınızı düşünmüyorum.

Bence bir uzatma fikriniz (çirkin olmasına rağmen) en iyi uzlaşmadır. Ancak, yakınlaştırmayı değiştirmek, sayfanın (veya DOM'nun) küçük bir mutasyonunu yapmak daha iyi bir çözüm olabilir. Örneğin, düşük z sırasına sahip görünmez (veya neredeyse böyle) bir öğe eklemeyi deneyin. Ayrıca mutasyonu kontrol etmek için hızlandırmanız gerekir, böylece saniyede sadece 1 kez veya daha az sıklıkla olur.


1
Yapılandırma veya parametrelerde açıkça sorulduğunda erişilebilirliği kırmak, daha yumuşak kaydırma adına kötü görünüyor.
manuell

1
@manuell bu yüzden uzantılar var. Öncelikleriniz tarayıcı önceliklerinin aksine çalıştığında devralabilirsiniz. Uzatma sinyalini yükleyen müşteriniz Chrome ekibiyle değil, sizinle aynı fikirde.
AlienRancher

-1

Chrome'un çok işlemli mimarisi diğer tüm tarayıcılardan farklıdır. Güvenlik için, ana tarayıcı kullanıcı arayüzü tek bir işlemde ve web sayfaları ayrı oluşturucu işlemlerinde (genellikle sekme başına bir) çalıştırılır. Renderer işlemleri yalnızca web sayfasının DOM'sini ve dolayısıyla tüm erişilebilirlik bilgilerini temsil eden süreçlerdir, ancak oluşturucu işlemlerinin işletim sistemiyle (etkinlik veya ileti gönderme veya alma), özellikle de oluşturucuyla etkileşime girmesine izin verilmez. işlemler erişilebilirlik olayları gönderemez veya alamaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.