On top of Selenium (web browser automation tool) for providing component-based abstraction of Html DOM with interaction APIs for automating the web pages built by modern front-end frameworks such as Material UI.
It depends on selenium-java 4.6.0 and JDK 11. please visit https://github.com/SeleniumHQ/selenium to understand how to use Selenium.
Most of the commonly used components have been implemented in hamster-selenium-component-materialui module.
All the supported MUI components could be found in MuiComponents
class. They have been tested against the examples in
the Material UI official page:
Version 4: https://v4.mui.com
Version 5: https://mui.com
Check hamster-selenium-examples module for the sample code and https://github.com/grossopa/hamster-selenium/wiki/Supported-Material-UI-Components for supported Material UI components.
The framework also supports the Angular version of Material UI.
Plain HTML:
<dependency>
<groupId>com.github.grossopa</groupId>
<artifactId>hamster-selenium-component-html</artifactId>
<version>1.11.0</version>
</dependency>
Material UI (React):
<dependency>
<groupId>com.github.grossopa</groupId>
<artifactId>hamster-selenium-component-materialui</artifactId>
<version>1.11.0</version>
</dependency>
Material UI (Angular):
<dependency>
<groupId>com.github.grossopa</groupId>
<artifactId>hamster-selenium-component-mats</artifactId>
<version>1.11.0</version>
</dependency>
Create a ComponentWebDriver from existing WebDriver:
ComponentWebDriver driver = new DefaultComponentWebDriver(webDriver);
Locate the element root by class name (e.g. class="MuiSelect-root") or other indicators and convert them by using as(mui()) and toSelect or other methods.
WebComponent component = driver.findComponent(By.className("MuiSelect-root"));
MuiSelect select = component.as(MuiComponents.mui()).toSelect(By.className("MuiMenuItem-root"));`