有一个很好的插件可以和selenium项目shadow-automation-selenium一起使用。它有助于编写更好、可读和可维护的代码。使用它,您可以访问多级影子 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) :使用它来使用标签选择下拉列表项(如果 UI 上只有一个下拉列表存在或加载,则使用它)。
void selectDropdown(WebElement parentElement, String label) :使用它来使用标签从父 DOM 中选择下拉列表项。
如何使用这个插件:
您将不得不依赖于您的项目。
Maven
<dependency>
<groupId>io.github.sukgu</groupId>
<artifactId>automation</artifactId>
<version>0.0.4</version>
<dependency>
用于位于 shadow-root dom 元素下的 html 标记
<properties-page id="settingsPage">
<textarea id="textarea">
</properties-page>
您可以在您的框架中使用此代码来获取 textarea 元素对象。
import io.github.sukgu.*;
Shadow shadow = new Shadow(driver);
WebElement element = shadow.findElement("properties-page#settingsPage>textarea#textarea");
String text = element.getText();