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

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-28 01:20:15415semak imbas

How to Interact with Chrome's

Cara Mengesan Elemen dalam Shadow DOM (#shadow-root) Semasa Mengosongkan Data Semak Imbas Penyemak Imbas Chrome Menggunakan cssSelector

Semasa berinteraksi dengan Shadow Elemen DOM dalam pop timbul "Clear Browsing Data" Chrome, adalah penting untuk mencari elemen #shadow-root pertama. Banyak percubaan menggunakan Selenium telah mengalami ralat.

Penyelesaian:

Untuk mengatasi ralat ini, ikuti kod JavaScript di bawah untuk mencari #shadow-root elemen:

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')

Penjelasan:

  • Selenium tidak secara jelas menyokong interaksi dengan elemen Shadow DOM.
  • Untuk mengakses elemen Shadow DOM , mula-mula kenal pasti Hos Bayangan.
  • Tentukan kaedah, dapatkanShadowElement, untuk mendapatkan Shadow Root berdasarkan Shadow Host.
  • Gunakan kaedah untuk mencari elemen dalam Shadow Tree.
  • Kod yang disediakan ialah coretan JavaScript yang mengesan secara langsung elemen yang dikehendaki tanpa memerlukan berbilang Shadow DOM traversals.

Contoh Skrip:

driver.get("chrome://settings/clearBrowserData");
driver.manage().window().maximize();
JavascriptExecutor js = (JavascriptExecutor) driver; 
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')");
// perform the desired action on the clearData element
clearData.click();

Nota:

Tangkapan skrin yang disediakan dalam teks sumber jawapan tidak disertakan dalam respons ini kerana pengehadan penurunan nilai.

Atas ialah kandungan terperinci Bagaimana untuk Berinteraksi dengan Elemen Shadow DOM '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