- 🆕 Add GraalVM support #116
- Add SessionSettings class to configure width and height of tab page.
🆕 Added Session.getDOMSnapshot() method (Returns a document snapshot, including the full DOM tree of the root node).
🆕 Added initial GraalVM support (this feature is not ready to use, wait until version 4.1.0)
Fixed Fixed buggy TaskKillProcessManager implementation.
🆕 Added non-blocking WebSocket support
List of supported WebSocket clients:
- async-http-client (Netty based)
- Eclipse Jetty
- JRE WebSocket Client (requires Java 11, default WebSocket client of cdp4j 4.x)
- JSR-356 WebSocket Client (Tomcat WebSocket Client & Tyrus is supported)
- TooTallNate WebSocket client
- Undertow WebSocket client
Beside these WebSocket clients implementations we still supports nv-websocket-client which is default WebSocket client of cdp4j 3.x. We highly recommended to use a non-blocking WebSocket client implemntation instead of nv-websocket-client. nv-websocket-client use java.net.Socket which blocks reading & writing threads.
non-blocking WebSocket client examples: Netty, Jetty, JRE WebSocket Client, JSR-356 WebSocketClient, TooTallNateWebSocketFactory, Undertow WebSocket Client
🆕 Replaced dynamic proxy based io.webfolder.cdp.command
classes with concrete class implementations.
🆕 Added custom gson type adapter to improve json serialization & deserialization performance. cdp4j 4.x use stag-java to generate TypeAdapter classes. Default option still use reflection based TypeAdapter. Invoke Options.useCustomTypeAdapter(true)
to use reflectionless (de)serialization.
🆕 Move to flatten cdp protocol. DevTools protocol is dropping nested targets and switching to flatten protocol. cdp4j 4.x will be incompatible with Chromium below version 72
- Added connectionTimeout paramater to AbstractLauncher.launch()
- Fixed Cancel close timer after task execution
- Updated nv-websocket-client to 2.9
- Removed WINP dependency from TaskKillProcessManager
- Added Launcher.isChromeInstalled() method
- Fixed xpath selector bug
- Added TaskKillProcessManager, Alternative implmentation of WindowsProcessManager
- Fixed xpath selector bug
- Added missing value field to DataCollected class
- Added Profiling sample.
- Added proxy connection sample
- Added [proxy support] to ws connection
- Properly disable translate UI
- Added missing try catch block to close process stream
- Updated copyright date
- Added missing getters
- Update websocket client library (nv-websocket-client) to 2.6
- Roll devtools protocol to r608591
- retry to get cdp4jId more than once
- Selector.matches() return false instead of throwing exception
- Added @JsFunction annotation
- Fixed NullPointerException
- Added Added a new Constructor to Launcher class
- Fixed ClassNotFoundException (org.jvnet.winp.WinProcess)
- Added MacOsProcessManager
- Roll devtools protocol to r574367
- Added Dom.getClickablePoint() and Dom.scrollIntoViewIfNeeded() method
- Fixed Mouse.click() does not trigger click event if the element is not visible.
- Fixed ElementNotFoundException for xpath expressions
- Fixed the wrong OS detection code and added human-readable error in case OS cannot be detected (ProcessManager)
- Removed sizzle support
- Fixed concurrency bug (incognito mode)
- Added Session.navigateAndWait() method
- Added guard for Launcher.launch #95
- Removed NullProcessManager (AdaptiveProcessManager is the new default ProcessManager)
- Added Session.captureScreenshot(boolean hideScrollbar) method