Существует очень хороший плагин, который можно использовать с проектом Селен ссылка . Это помогает в написании гораздо лучшего, удобочитаемого и обслуживаемого кода. С его помощью вы можете получить доступ к многоуровневому теневому DOM (до 4 уровней). Это использует простой селектор CSS для идентификации элементов.
WebElement findElement(String cssSelector)
: используйте этот метод, если хотите отдельный элемент из DOM
List<WebElement> findElements(String cssSelector)
: используйте это, если хотите найти все элементы из DOM
WebElement findElements(WebElement parent, String cssSelector)
: используйте это, если вы хотите найти отдельные элементы из родительского объекта DOM
List<WebElement> findElements(WebElement parent, String cssSelector)
: используйте это, если вы хотите найти все элементы из родительского объекта DOM
WebElement getShadowElement(WebElement parent,String selector)
: используйте это, если вы хотите найти один элемент из родительского DOM
List<WebElement> getAllShadowElement(WebElement parent,String selector)
: используйте это, если хотите найти все элементы из родительского DOM
boolean isVisible(WebElement element)
: используйте это, если вы хотите найти видимость элемента
boolean isChecked(WebElement element)
: используйте это, если хотите проверить, установлен ли флажок
boolean isDisabled(WebElement element)
: используйте это, если хотите проверить, отключен ли элемент
String getAttribute(WebElement element,String attribute)
: используйте это, если вы хотите получить атрибут, подобный aria-selected и другим настраиваемым атрибутам элементов.
void selectCheckbox(String label)
: используйте для выбора элемента флажка с помощью метки.
void selectCheckbox(WebElement parentElement, String label)
: используйте для выбора элемента флажка с помощью метки.
void selectRadio(String label)
: используйте для выбора радиоэлемента с помощью метки.
void selectRadio(WebElement parentElement, String label)
: используйте это для выбора радиоэлемента из родительского DOM с помощью метки.
void selectDropdown(String label)
: используйте это, чтобы выбрать элемент раскрывающегося списка, используя метку (используйте это, если только один раскрывающийся список присутствует или загружен в пользовательский интерфейс).
void selectDropdown(WebElement parentElement, String label)
: используйте это, чтобы выбрать элемент раскрывающегося списка из родительского DOM, используя метку.
Как использовать этот плагин:
Вам придётся зависеть в вашем проекте.
Maven
<dependency>
<groupId>io.github.sukgu</groupId>
<artifactId>automation</artifactId>
<version>0.0.4</version>
<dependency>
для html-тега, который находится под теневым корневым элементом dom
<properties-page id="settingsPage">
<textarea id="textarea">
</properties-page>
Вы можете использовать этот код в своей инфраструктуре для захвата элемента textarea Object.
import io.github.sukgu.*;
Shadow shadow = new Shadow(driver);
WebElement element = shadow.findElement("properties-page#settingsPage>textarea#textarea");
String text = element.getText();