From d9870514beeb96fa75acd0fff3bb9579fc15813d Mon Sep 17 00:00:00 2001 From: wangbing Date: Sat, 18 May 2024 10:55:40 +0800 Subject: [PATCH] init --- src/main/java/com/example/jxbrowser/Demo.java | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/jxbrowser/Demo.java b/src/main/java/com/example/jxbrowser/Demo.java index e0a220e..ff80164 100644 --- a/src/main/java/com/example/jxbrowser/Demo.java +++ b/src/main/java/com/example/jxbrowser/Demo.java @@ -2,7 +2,15 @@ package com.example.jxbrowser; import com.teamdev.jxbrowser.chromium.Browser; import com.teamdev.jxbrowser.chromium.DataReceivedParams; +import com.teamdev.jxbrowser.chromium.RequestCompletedParams; +import com.teamdev.jxbrowser.chromium.ResponseStartedParams; import com.teamdev.jxbrowser.chromium.ba; +import com.teamdev.jxbrowser.chromium.dom.By; +import com.teamdev.jxbrowser.chromium.dom.DOMDocument; +import com.teamdev.jxbrowser.chromium.events.ConsoleEvent; +import com.teamdev.jxbrowser.chromium.events.ConsoleListener; +import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent; +import com.teamdev.jxbrowser.chromium.events.LoadAdapter; import com.teamdev.jxbrowser.chromium.swing.BrowserView; import com.teamdev.jxbrowser.chromium.swing.DefaultDialogHandler; import com.teamdev.jxbrowser.chromium.swing.DefaultDownloadHandler; @@ -13,9 +21,13 @@ import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.math.BigInteger; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.TimeUnit; public class Demo { @@ -75,17 +87,77 @@ public class Demo { // 先加载空白页 browser.loadURL("about:blank"); + // 控制台日志 + browser.addConsoleListener(new ConsoleListener() { + @Override + public void onMessage(ConsoleEvent consoleEvent) { + System.out.println(consoleEvent.getMessage()); + } + }); + + // 监听加载完成 + browser.addLoadListener(new LoadAdapter() { + @Override + public void onFinishLoadingFrame(FinishLoadingEvent event) { + if (event.isMainFrame()) { + System.out.println("加载完成..."); + } + } + }); + // 休眠3秒 sleep(3); browser.getContext().getNetworkService().setNetworkDelegate(new DefaultNetworkDelegate() { + + private Map responseMap = new HashMap<>(); + + private boolean isFollow(String url) { + if (url.contains("login")) { + return true; + } + return false; + } + + @Override + public void onResponseStarted(ResponseStartedParams params) { + if (!isFollow(params.getURL())) { + return; + } + responseMap.put(params.getURL(), new ByteArrayOutputStream(2 << 10)); + } + @Override public void onDataReceived(DataReceivedParams params) { - String string = new String(params.getData()); - super.onDataReceived(params); + if (!isFollow(params.getURL())) { + return; + } + // 接口返回数据较多时,会进行分段接受,需要进行拼接 + ByteArrayOutputStream stream = responseMap.get(params.getURL()); + if (stream != null) { + try { + stream.write(params.getData()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + @Override + public void onCompleted(RequestCompletedParams params) { + if (!isFollow(params.getURL())) { + return; + } + System.out.println(params.getURL()); + System.out.println(new String(responseMap.get(params.getURL()).toByteArray())); } }); browser.loadURL("http://test.wbsite.xyz:8027/login.htm"); + + sleep(3); + + DOMDocument document = browser.getDocument(); + document.findElement(By.className("el-input__inner")).setAttribute("value", "1"); }