Rumah >Java >javaTutorial >Bagaimana untuk Mengakses dan Berinteraksi dengan Elemen Shadow DOM dalam Dialog 'Kosongkan Data Penyemakan Imbas' Chrome Menggunakan Selenium?
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!