Heim > Java > javaLernprogramm > Wie kann ich mit Selenium im Chrome-Dialogfeld „Browserdaten löschen' auf Shadow-DOM-Elemente zugreifen und mit ihnen interagieren?

Wie kann ich mit Selenium im Chrome-Dialogfeld „Browserdaten löschen' auf Shadow-DOM-Elemente zugreifen und mit ihnen interagieren?

Barbara Streisand
Freigeben: 2024-12-19 15:06:09
Original
358 Leute haben es durchsucht

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

Schnittstelle mit Shadow-DOM-Elementen in #shadow-root (open) beim Löschen von Chrome-Browserdaten über CSS-Selektor

Beim Automatisieren der Chrome-Browser Das Popup „Browserdaten löschen“ über Selenium kann auf Elemente innerhalb von #shadow-root (offen) zugreifen, z. B. auf die Schaltfläche „Daten löschen“. herausfordernd. Dies liegt daran, dass Schatten-DOM-Elemente nicht direkt über den regulären DOM-Baum zugänglich sind.

Lokalisieren des Schatten-Hosts und -Stamms

Zur Interaktion mit Schatten-DOM-Elementen , müssen wir zunächst den Schattenhost identifizieren, also das Element im Haupt-DOM, das das Schatten-DOM enthält. Sobald der Schattenhost gefunden wurde, können wir die Methode getShadowRoot() des Selenium JavaScript Executor verwenden, um den Schattenstamm des Hosts abzurufen.

Schattenebenen durchqueren

In Fällen, in denen es mehrere Ebenen des Schatten-DOM gibt, müssen wir diese Ebenen durchlaufen, um das gewünschte Element zu erreichen. Dazu können wir den obigen Vorgang rekursiv wiederholen, indem wir den Schattenhost innerhalb des aktuellen Schattenstamms suchen und dann seinen Schattenstamm mit getShadowRoot() abrufen.

Beispielcode

Das folgende Beispiel zeigt, wie Sie mit der Methode getShadowRoot() und der rekursiven Durchquerung auf die Schaltfläche „Daten löschen“ im zugreifen Popup „Browserdaten löschen“:

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();
Nach dem Login kopieren

Durch die Nutzung dieses Ansatzes können Sie effektiv mit Elementen in #shadow-root (offen) interagieren und gewünschte Aktionen ausführen.

Das obige ist der detaillierte Inhalt vonWie kann ich mit Selenium im Chrome-Dialogfeld „Browserdaten löschen' auf Shadow-DOM-Elemente zugreifen und mit ihnen interagieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage