Coder Social home page Coder Social logo

ui4j's Introduction

Ui4j

License Codacy Badge circleci CLA assistant

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.

cdp4j (Automation for Chrome & Chromium)

Use cdp4j Java library if you need to automate Chrome or Chromium based browsers.

Supported Java Versions

Oracle Java 8.

Both the JRE and the JDK are suitable for use with this library.

Licensing

Ui4j is released under the terms of the MIT License (MIT).

You are free to use Ui4j or any of its constituent parts in any other project (even commercial projects) so long as its copyright headers are left intact.

Stability

This library is suitable for use in production systems.

Integration with Maven

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.0.0</version>
</dependency>

Download

ui4j-webkit-3.0.0.jar - 400 KB

ui4j-webkit-3.0.0-sources.jar - 200 KB

Supported Platforms

Ui4j has been tested under Windows 10 but should work on any platform where a Java 8 JRE or JDK is available.

Headless Mode

Ui4j can be run in "headless" mode using Xfvb or with using Monocle.

Headless Mode with Monocle

  1. Download or add maven dependency of the latest openjfx-monocle.
  2. Add -Dui4j.headless Java system parameter from command line or with using api System.setProperty("ui4j.headless", "true");

Logging

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.

CSS Selector Engine

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.

Usage Examples

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());
                });
        }
    }
}

Building Ui4j

mvn package

FAQ

How can i set the user agent string?

See UserAgent.java sample.

How can i execute javascript?

See JavaScriptExecution.java sample.

How can i handle browser login, prompt or confirmation dialog?

See DialogTest.java for custom handlers or use default handlers from Dialogs.java.

What is the easiest way clear all input elements?

Use clear method of the Form class.

Getting Help

WebFolder

ui4j is an MIT 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.

ui4j's People

Contributors

mikekaufman avatar mwberry avatar ruimateus avatar webfolderio avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.