/*
* https://webfolder.io/license.html
*/
package io.webfolder.cdp.connection;
import java.nio.file.Path;
import io.webfolder.cdp.Example;
import io.webfolder.cdp.Launcher;
import io.webfolder.cdp.Options;
import io.webfolder.cdp.channel.ChannelFactory;
import io.webfolder.cdp.channel.DevToolsProfileConnection;
import io.webfolder.cdp.channel.JreWebSocketFactory;
import io.webfolder.cdp.session.Session;
import io.webfolder.cdp.session.SessionFactory;
// This example is similar to DevToolsConnectionExample except that we don't need to know remote Debugging Port directly.
// If you don't specify the remote Debugging Port, Chrome will use random free port.
// Chrome writes the free port and websocket debugger to DevToolsActivePort file in the user profile directory.
// If you know the user profile directory, you could re-connect to existing DevTools server.
@Example
public class DevToolsProfileConnectionExample {
public static void main(String[] args) throws InterruptedException {
Launcher launcher = new Launcher();
SessionFactory dummySessionFactory = launcher.launch();
// --------------------------------------------------------------------
// connect an existing devtools server
// --------------------------------------------------------------------
Path userProfileDirectory = launcher.getUserDataDir();
DevToolsProfileConnection connection = new DevToolsProfileConnection(userProfileDirectory);
// check the connection if it's valid (optional)
if ( ! connection.isValid() ) {
throw new IllegalStateException();
}
Options options = Options.builder().build();
ChannelFactory webSocketFactory = new JreWebSocketFactory();
SessionFactory factory = new SessionFactory(options, webSocketFactory, connection);
Session session = factory.create();
session.navigate("https://google.com");
// --------------------------------------------------------------------
Thread.sleep(5_000);
dummySessionFactory.close();
factory.close();
launcher.kill();
}
}