Heim >Java >javaLernprogramm >Wie interagiere ich mit Chromes „Clear Browsing Data'-Shadow-DOM-Elementen mithilfe von Selenium?

Wie interagiere ich mit Chromes „Clear Browsing Data'-Shadow-DOM-Elementen mithilfe von Selenium?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-28 01:20:15413Durchsuche

How to Interact with Chrome's

So finden Sie Elemente im Shadow-DOM (#shadow-root) beim Löschen der Browserdaten des Chrome-Browsers mithilfe von cssSelector

Bei der Interaktion mit Shadow Wenn Sie DOM-Elemente im Chrome-Popup „Browserdaten löschen“ verwenden, müssen Sie unbedingt zuerst das Element #shadow-root finden. Bei zahlreichen Versuchen mit Selenium sind Fehler aufgetreten.

Lösung:

Um diese Fehler zu beheben, folgen Sie dem folgenden JavaScript-Code, um das #shadow-root-Element zu finden:

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

Erklärung:

  • Selen tut es Unterstützt nicht explizit Interaktionen mit Shadow-DOM-Elementen.
  • Um auf Shadow-DOM-Elemente zuzugreifen, identifizieren Sie zunächst den Shadow-Host.
  • Definieren Sie eine Methode, getShadowElement, um den Shadow-Root basierend auf dem Shadow-Host zu erhalten.
  • Verwenden Sie die Methode, um das Element im Schattenbaum zu finden.
  • Der bereitgestellte Code ist ein JavaScript-Snippet, das direkt lokalisiert das gewünschte Element, ohne dass mehrere Shadow-DOM-Durchquerungen erforderlich sind.

Beispielskript:

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();

Hinweis:

Der im Quelltext der Antwort bereitgestellte Screenshot ist aufgrund von Markdown-Einschränkungen nicht in dieser Antwort enthalten.

Das obige ist der detaillierte Inhalt vonWie interagiere ich mit Chromes „Clear Browsing Data'-Shadow-DOM-Elementen mithilfe von Selenium?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn