Ui4j is a web-automation library for Java. It is a thin wrapper library around the JavaFx WebKit Engine, and can be used for automating the use of web pages and for testing web pages.
Use cdp4j Java library if you need to automate Chrome or Chromium based browsers.
Oracle Java 8.
Both the JRE and the JDK are suitable for use with this library.
Ui4j is licensed as AGPL software.
Buying a license is mandatory as soon as you develop commercial activities distributing the ui4j software inside your product or deploying it on a network without disclosing the source code of your own applications under the AGPL license.
This library is suitable for use in production systems.
To use the official release of ui4j, please use the following snippet in your pom.xml file.
Add the following to your POM's tag:
<dependency>
<groupId>io.webfolder</groupId>
<artifactId>ui4j-webkit</artifactId>
<version>3.1.0</version>
</dependency>
ui4j-webkit-3.1.0.jar - 394 KB
ui4j-webkit-3.1.0-sources.jar - 198 KB
Ui4j has been tested under Windows 10 but should work on any platform where a Java 8 JRE or JDK is available.
Ui4j can be run in "headless" mode using Xfvb or with using Monocle.
Headless Mode with Monocle
- Download or add maven dependency of the latest openjfx-monocle.
- Add -Dui4j.headless Java system parameter from command line or with using api
System.setProperty("ui4j.headless", "true");
Both simple logger for java (SLF4J) and Java utility logger (JUL) is supported. If slf4j is available on classpath io.webfolder.ui4j.api.util.LoggerFactory use slf4j else java utility logger is used.
Ui4j use W3C selector engine which is default selector engine of WebKit. Alternatively Sizzle selector engine might be used. Sizzle is the css selector engine of JQuery and it supports extra selectors like :has(div), :text, contains(text) etc. Check the Sizzle.java for using sizzle with Ui4j.
Here is a very basic sample program that uses Ui4j to display a web page with a "hello, world!" message. See the ui4j-sample project for more sample code snippets.
package io.webfolder.ui4j.sample;
import io.webfolder.ui4j.api.browser.BrowserEngine;
import io.webfolder.ui4j.api.browser.BrowserFactory;
import io.webfolder.ui4j.api.browser.Page;
public class HelloWorld {
public static void main(String[] args) {
// get the instance of the webkit
BrowserEngine browser = BrowserFactory.getWebKit();
// navigate to blank page
Page page = browser.navigate("about:blank");
// show the browser page
page.show();
// append html header to the document body
page.getDocument().getBody().append("<h1>Hello, World!</h1>");
}
}
Here is another sampe code that list all front page news from Hacker News.
package io.webfolder.ui4j.sample;
import static io.webfolder.ui4j.api.browser.BrowserFactory.getWebKit;
import io.webfolder.ui4j.api.browser.Page;
public class HackerNews {
public static void main(String[] args) {
try (Page page = getWebKit().navigate("https://news.ycombinator.com")) {
page
.getDocument()
.queryAll(".title a")
.forEach(e -> {
System.out.println(e.getText().get());
});
}
}
}
mvn package
See UserAgent.java sample.
See JavaScriptExecution.java sample.
See DialogTest.java for custom handlers or use default handlers from Dialogs.java.
Use clear method of the Form class.
ui4j is an AGPL licensed open source project and completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support ui4j development by buying support package. Please contact us for support packages & pricing.