Masalah cache pohon yang dapat diakses Google Chrome dengan UI Automation


154

Google Chrome tidak menyegarkan elemen aksesibilitas ( AutomationElement ) ketika pengguna menggulir ke bawah di browser.

Untuk memperbanyaknya:

  1. Aktifkan aksesibilitas penyaji dengan: "chrome --force-render-accessibility"atau dengan mengatur Aksesibilitas Global di "chrome://accessibility".
  2. Buka http://en.wikipedia.org/wiki/Google
  3. Buka inspect.exe dalam UI Automation Mode (dari Windows Kits), cari elemen "Tautan ke artikel terkait".
  4. Kembali ke Chrome, Gulir ke bawah hingga "Tautan ke artikel terkait" di bagian bawah terlihat
  5. Elemen "Tautan ke artikel terkait" ditandai dari layar

Saya menemukan beberapa solusi manual yang dapat memaksa Chrome untuk menyegarkannya:

  1. Atur Zoom ke 90% lalu atur kembali ke 100% (cara yang sangat jelek)
  2. Nonaktifkan aksesibilitas lalu aktifkan chrome://accessibility/

Yang saya cari adalah kemampuan untuk melakukan salah satu dari operasi ini secara terprogram, atau operasi apa pun yang dapat membuat Chrome menyegarkan pohon cache-nya.


Apa yang saya coba:

  • Ubah ukuran jendela dengan PInvoke/MoveWindow
  • Redraw Window dengan PInvoke/Redrawwindow
  • Buat ekstensi chrome dan perbesar zoom hingga 100% sesuai permintaan: chrome.tabs.setZoom(null, 0);(berfungsi tetapi berkedip dan memperlambat jendela)

Tak satu pun dari ini bekerja dengan baik.

EDIT : Diuji dengan Google Chrome 40.XX, 41.XX, 42.XX, 43.XX, 44.XX, 45.XX, 46.XX, 47.XX.Dev, 48.XX.Dev di bawah Windows 7.


13
Anda harus melaporkan ini ke bug aksesibilitas kromium di Windows: code.google.com/p/chromium/issues/…
Simon Mourier

5
Bisakah Anda membagikan beberapa informasi tentang apa yang Anda coba lakukan setelah menyelesaikan masalah? mungkin ada solusinya ...
DoronG

@ Ksv3n silakan posting tautan ke bug yang Anda posting
Mauricio Gracia Gutierrez

@ Ksv3n Sudahkah Anda mencoba melakukan tes yang sama pada beberapa browser lain? Firefox mungkin?
PseudoAj

@Emzor terima kasih telah mencoba melakukan pengeditan, tapi tolong jangan membuat pengeditan sepele untuk membuat tautan terlihat "lebih baik". Terkadang tautan lebih baik ditampilkan secara lengkap sehingga pengguna dapat menyalin dan menempelnya jika perlu.
gitsitgo

Jawaban:


1

Menggulir di halaman sederhana dioptimalkan untuk tidak memerlukan perhitungan dari renderer. Hanya komposer dan GPU yang diperlukan untuk menggulir karena itu render tree yang hanya diperbarui dari renderer masih sama.

Memerlukan penyaji untuk melintasi DOM dan memperbarui pohon Aksesibilitas selama gulir berjalan bertentangan dengan upaya beberapa tahun untuk memiliki gulir yang lancar, khususnya untuk perangkat sentuh jadi saya tidak berpikir Anda akan mendapatkan traksi pada perbaikan bug.

Gagasan Anda tentang ekstensi menurut saya adalah kompromi terbaik (walaupun jelek). Melainkan mengubah zoom, melakukan mutasi kecil pada halaman (atau DOM) mungkin merupakan solusi yang lebih baik. Coba misalnya menambahkan elemen tidak terlihat (atau hampir jadi) dengan z-order rendah. Anda juga perlu menilai kontrol mutasi sehingga hanya terjadi 1 kali per detik atau bahkan lebih jarang.


1
Memutuskan aksesibilitas ketika ditanya secara eksplisit dalam konfigurasi atau parameter, atas nama penggeledahan lebih buruk tampaknya buruk.
manuell

1
@manuell itu sebabnya ekstensi ada. Ketika prioritas Anda berjalan bertentangan dengan prioritas browser, Anda dapat mengambil alih. Pelanggan Anda memasang sinyal ekstensi yang mereka setujui dengan Anda dan bukan dengan tim Chrome.
AlienRancher

-1

Arsitektur multi-proses Chrome berbeda dari peramban lainnya. Untuk keamanan, UI browser utama dalam satu proses, dan halaman web dijalankan dalam proses renderer terpisah (biasanya satu per tab). Proses Renderer adalah satu-satunya dengan representasi DOM halaman web dan karenanya semua informasi aksesibilitas, tetapi proses renderer tidak diizinkan untuk berinteraksi dengan sistem operasi (mengirim atau menerima acara atau pesan) - khususnya, renderer proses tidak dapat mengirim atau menerima acara aksesibilitas.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.