Rumah >Java >javaTutorial >Bagaimana untuk Mengakses dan Berinteraksi dengan Elemen Shadow DOM dalam Dialog 'Kosongkan Data Penyemakan Imbas' Chrome Menggunakan Selenium?

Bagaimana untuk Mengakses dan Berinteraksi dengan Elemen Shadow DOM dalam Dialog 'Kosongkan Data Penyemakan Imbas' Chrome Menggunakan Selenium?

Barbara Streisand
Barbara Streisandasal
2024-12-19 15:06:09328semak imbas

How to Access and Interact with Shadow DOM Elements in Chrome's

Mengantaramuka dengan Elemen Shadow DOM Dalam #shadow-root (terbuka) Semasa Mengosongkan Data Penyemak Imbas Chrome melalui Pemilih CSS

Semasa mengautomasikan penyemak imbas Chrome "Kosongkan Data Penyemakan Imbas" timbul melalui Selenium, mengakses elemen dalam #shadow-root (terbuka), seperti Butang "Kosongkan data", boleh mencabar. Ini disebabkan oleh fakta bahawa elemen DOM bayangan tidak boleh diakses secara langsung melalui pepohon DOM biasa.

Mencari Hos Bayangan dan Akar

Untuk berinteraksi dengan elemen DOM bayang-bayang , kita perlu mengenal pasti hos bayangan dahulu, iaitu elemen dalam DOM utama yang mengandungi DOM bayangan. Setelah hos bayangan ditemui, kita boleh menggunakan kaedah getShadowRoot() daripada Selenium JavaScript Executor untuk mendapatkan semula akar bayangan hos.

Merentasi Tahap Bayang

Dalam kes di mana terdapat berbilang peringkat DOM bayangan, kita perlu melintasi tahap ini untuk mencapai elemen yang dikehendaki. Untuk melakukan ini, kita boleh mengulangi proses di atas secara rekursif dengan mencari hos bayang dalam akar bayang semasa dan kemudian mendapatkan semula akar bayangnya menggunakan getShadowRoot().

Kod Contoh

Contoh berikut menunjukkan cara menggunakan kaedah getShadowRoot() dan traversal rekursif untuk mengakses "Kosongkan data" butang dalam pop timbul "Kosongkan Data Penyemakan Imbas":

JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement shadowHost = driver.findElement(By.cssSelector("settings-ui"));
WebElement shadowRoot = (WebElement) js.executeScript("return arguments[0].shadowRoot", shadowHost);
WebElement clearData = (WebElement) js.executeScript("return document.querySelector('settings-ui').shadowRoot.querySelector('settings-main').shadowRoot.querySelector('settings-basic-page').shadowRoot.querySelector('settings-section > settings-privacy-page').shadowRoot.querySelector('settings-clear-browsing-data-dialog').shadowRoot.querySelector('#clearBrowsingDataDialog').querySelector('#clearBrowsingDataConfirm')");
clearData.click();

Dengan memanfaatkan pendekatan ini, anda boleh berinteraksi dengan berkesan dengan elemen dalam #shadow-root (terbuka) dan melakukan tindakan yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses dan Berinteraksi dengan Elemen Shadow DOM dalam Dialog 'Kosongkan Data Penyemakan Imbas' Chrome Menggunakan Selenium?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn