Google Chrome tidak menyegarkan elemen aksesibilitas ( AutomationElement ) ketika pengguna menggulir ke bawah di browser.
Untuk memperbanyaknya:
- Aktifkan aksesibilitas penyaji dengan:
"chrome --force-render-accessibility"
atau dengan mengatur Aksesibilitas Global di"chrome://accessibility"
. - Buka http://en.wikipedia.org/wiki/Google
- Buka inspect.exe dalam UI Automation Mode (dari Windows Kits), cari elemen "Tautan ke artikel terkait".
- Kembali ke Chrome, Gulir ke bawah hingga "Tautan ke artikel terkait" di bagian bawah terlihat
- Elemen "Tautan ke artikel terkait" ditandai dari layar
Saya menemukan beberapa solusi manual yang dapat memaksa Chrome untuk menyegarkannya:
- Atur Zoom ke 90% lalu atur kembali ke 100% (cara yang sangat jelek)
- 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.
c#
google-chrome
pinvoke
accessibility
ui-automation
Sempurna28
sumber
sumber
Jawaban:
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.
sumber
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.
sumber