2.Ich verwende auch das Selenium Java-Framework für die Testautomatisierung und vor kurzem wurde die Anwendung mithilfe von Saffron mit Shadow DOM aktualisiert. Wir haben versucht, die Automatisierung mithilfe des Javascript-Executors querySelector durchzuführen. Die Anwendung verfügt über mehr als 20 Schattenwurzeln auf einer einzelnen Seite und die meisten Schattenwurzeln sind untergeordnete Elemente der vorherigen Wurzel. Um ein Element zu identifizieren, müssen wir also viele Wurzeln durchlaufen, wie in document.querySelector('root1').shadowRoot.querySelector('root2').... also bis zur n-ten Wurzel, um ein Element zu finden.
Code: Select all
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement shadowHost = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".PersonaSelectionPage-button")));
SearchContext shadowRoot = shadowHost.getShadowRoot();
WebElement controlBtn = shadowRoot.findElement(By.cssSelector(".control"));
// Use JS to click the actual element
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", controlBtn);
Thread.sleep(4000);
Könnten Sie bitte einen Einblick in andere Lösungen zur Automatisierung von Shadow DOM mit Selen geben?