2.Я также использую платформу Selenium Java для автоматизации тестирования, и недавно приложение было обновлено до Shadow DOM с использованием шафрана. Мы попытались автоматизировать использование исполнителя javascript querySelector. Приложение имеет более 20 теневых корней на одной странице, и большинство теневых корней являются дочерними по отношению к предыдущему корню. Таким образом, чтобы идентифицировать элемент, нам нужно пройти через множество корней, как в document.querySelector('root1').shadowRoot.querySelector('root2')....как и мудро, до n-го корня, чтобы найти элемент.
Код: Выделить всё
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);
Не могли бы вы рассказать о других решениях для автоматизации Shadow DOM с использованием селена.
Подробнее здесь:
https://stackoverflow.com/questions/798 ... ava-framew