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