Skip to content

Commit a82272d

Browse files
committed
重写事件监听,修改connection,CDPSession 2024-8-8
1 parent 795afeb commit a82272d

File tree

97 files changed

+2218
-2574
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

97 files changed

+2218
-2574
lines changed

example/src/main/java/com/ruiyun/example/AutoCommentExample.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
import com.ruiyun.jvppeteer.core.page.Page;
77
import com.ruiyun.jvppeteer.options.LaunchOptions;
88
import com.ruiyun.jvppeteer.options.LaunchOptionsBuilder;
9-
import com.ruiyun.jvppeteer.options.PageNavigateOptions;
9+
import com.ruiyun.jvppeteer.options.GoToOptions;
10+
import com.ruiyun.jvppeteer.options.PuppeteerLifeCycle;
1011

1112
import java.util.ArrayList;
1213
import java.util.Collections;
@@ -22,9 +23,9 @@ public static void main(String[] args) throws Exception {
2223
//指定chrome启动路径
2324
Browser browser = lauch("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
2425
Page page = browser.newPage();
25-
PageNavigateOptions navigateOptions = new PageNavigateOptions();
26+
GoToOptions navigateOptions = new GoToOptions();
2627
//如果不设置 domcontentloaded 算页面导航完成的话,那么goTo方法会超时,因为图片请求被拦截了,页面不会达到loaded阶段
27-
navigateOptions.setWaitUntil(Collections.singletonList("domcontentloaded"));
28+
navigateOptions.setWaitUntil(Collections.singletonList(PuppeteerLifeCycle.DOMCONTENTLOADED));
2829
page.goTo("https://www.csdn.net/", navigateOptions);
2930
String content = page.content();
3031

example/src/main/java/com/ruiyun/example/CrawlerTaobaoItem.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
import com.ruiyun.jvppeteer.core.page.Page;
88
import com.ruiyun.jvppeteer.options.LaunchOptions;
99
import com.ruiyun.jvppeteer.options.LaunchOptionsBuilder;
10-
import com.ruiyun.jvppeteer.options.PageNavigateOptions;
10+
import com.ruiyun.jvppeteer.options.GoToOptions;
11+
import com.ruiyun.jvppeteer.options.PuppeteerLifeCycle;
1112
import com.ruiyun.jvppeteer.util.StringUtil;
1213
import com.ruiyun.jvppeteer.util.ValidateUtil;
1314
import org.htmlparser.Node;
@@ -100,9 +101,9 @@ public Object call() {
100101
Page page = null;
101102
try {
102103
page = pages.take();
103-
PageNavigateOptions navigateOptions = new PageNavigateOptions();
104+
GoToOptions navigateOptions = new GoToOptions();
104105
//如果不设置 domcontentloaded 算页面导航完成的话,那么goTo方法会超时,因为图片请求被拦截了,页面不会达到loaded阶段
105-
navigateOptions.setWaitUntil(Collections.singletonList("domcontentloaded"));
106+
navigateOptions.setWaitUntil(Collections.singletonList(PuppeteerLifeCycle.valueOf("domcontentloaded")));
106107
page.goTo("https://item.taobao.com/item.htm?id=541605195654", navigateOptions);
107108
String content = page.content();
108109
return parseItem(content);

example/src/main/java/com/ruiyun/example/LaunchExample.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,14 @@ public class LaunchExample {
1717
@Test
1818
public void test1() throws Exception {
1919
//自动下载722234版本的浏览器,第一次下载后不会再下载,内置有下载链接,下载链接可能失效。
20-
BrowserFetcher.downloadIfNotExist();
21-
LaunchOptions launchOptions = new LaunchOptionsBuilder().withIgnoreDefaultArgs(Collections.singletonList("--enable-automation")).withHeadless(false).build();
20+
21+
LaunchOptions launchOptions = new LaunchOptionsBuilder().withIgnoreDefaultArgs(Collections.singletonList("--enable-automation")).withHeadless(false).withExecutablePath("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe").build();
2222
Browser browser = Puppeteer.launch(launchOptions);
2323
Page page = browser.newPage();
2424
page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3");
2525
// 做一些其他操作
26-
browser.close();
26+
// Thread.sleep(10000);
27+
// browser.close();
2728
}
2829

2930
public static void main(String[] args) {

example/src/main/java/com/ruiyun/example/PageEventListenerExample.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,17 @@ public static void main(String[] args) throws Exception {
3131
page.onDialog((dialog) -> System.out.println("页面有弹窗事件..."+dialog));
3232
page.onError((error) -> System.out.println("页面有错误事件..."+error.getMessage()));
3333
page.onMetrics((metrics) -> System.out.println("页面有metrics事件..."+metrics));
34-
page.onFrameattached((frame) -> System.out.println("页面有Frameattached事件..."+frame.getName()));
35-
page.onFramenavigated((frame) -> System.out.println("页面有Framenavigated事件..."+frame.getName()));
36-
page.onFramedetached((frame) -> System.out.println("页面有Framedetached事件..."+frame.getName()));
37-
page.onPageerror(exception -> System.out.println("页面有pageerror事件..."+exception.getMessage()));
34+
page.onFrameAttached((frame) -> System.out.println("页面有Frameattached事件..."+frame.getName()));
35+
page.onFrameNavigated((frame) -> System.out.println("页面有Framenavigated事件..."+frame.getName()));
36+
page.onFrameDetached((frame) -> System.out.println("页面有Framedetached事件..."+frame.getName()));
37+
page.onPageError(exception -> System.out.println("页面有pageerror事件..."+exception.getMessage()));
3838
page.onPopup((popup) -> System.out.println("页面有popup事件..."+popup.getMessage()));
3939
page.onRequest((request) -> System.out.println("页面有请求发出..."+request.url()));
40-
page.onRequestfailed((request) -> System.out.println("页面发出的请求失败了..."+request.url()));
41-
page.onRequestfinished((request) -> System.out.println("页面的请求结束了..."+request.url()));
40+
page.onRequestFailed((request) -> System.out.println("页面发出的请求失败了..."+request.url()));
41+
page.onRequestFinished((request) -> System.out.println("页面的请求结束了..."+request.url()));
4242
page.onResponse((response) -> System.out.println("页面请求["+response.url()+"]对应的响应是..."+response.status()));
43-
page.onWorkercreated((worker) -> System.out.println("页面上有个worker被创建了..."+worker.url()));
44-
page.onWorkerdestroyed((worker) -> System.out.println("页面上有个worker消失了..."+worker.url()));
43+
page.onWorkerCreated((worker) -> System.out.println("页面上有个worker被创建了..."+worker.url()));
44+
page.onWorkerDestroyed((worker) -> System.out.println("页面上有个worker消失了..."+worker.url()));
4545
page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3");
4646
page.close();
4747
}

example/src/main/java/com/ruiyun/example/PageFileChooserExample.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
import com.ruiyun.jvppeteer.core.page.Page;
88
import com.ruiyun.jvppeteer.options.LaunchOptions;
99
import com.ruiyun.jvppeteer.options.LaunchOptionsBuilder;
10-
import com.ruiyun.jvppeteer.options.PageNavigateOptions;
10+
import com.ruiyun.jvppeteer.options.GoToOptions;
11+
import com.ruiyun.jvppeteer.options.PuppeteerLifeCycle;
1112

1213
import java.io.IOException;
1314
import java.util.ArrayList;
@@ -29,8 +30,8 @@ public static void main(String[] args) throws InterruptedException, ExecutionExc
2930
Browser browser = Puppeteer.launch(options);
3031

3132
Page page = browser.newPage();
32-
PageNavigateOptions options1 = new PageNavigateOptions();
33-
options1.setWaitUntil(Collections.singletonList("domcontentloaded"));
33+
GoToOptions options1 = new GoToOptions();
34+
options1.setWaitUntil(Collections.singletonList(PuppeteerLifeCycle.valueOf("domcontentloaded")));
3435
page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3");
3536
Future<FileChooser> fileChooserFuture = page.waitForFileChooser(30000);
3637
ElementHandle elementHandle = page.$("#form > span.bg.s_ipt_wr.quickdelete-wrap > span.soutu-btn");

example/src/main/java/com/ruiyun/example/PageGoBackExample.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
import com.ruiyun.jvppeteer.core.page.Page;
66
import com.ruiyun.jvppeteer.options.LaunchOptions;
77
import com.ruiyun.jvppeteer.options.LaunchOptionsBuilder;
8-
import com.ruiyun.jvppeteer.options.PageNavigateOptions;
8+
import com.ruiyun.jvppeteer.options.GoToOptions;
9+
import com.ruiyun.jvppeteer.options.PuppeteerLifeCycle;
910

1011
import java.util.ArrayList;
1112
import java.util.Collections;
@@ -23,9 +24,9 @@ public static void main(String[] args) throws Exception {
2324

2425
Page page = browser.newPage();
2526

26-
PageNavigateOptions navigateOptions = new PageNavigateOptions();
27+
GoToOptions navigateOptions = new GoToOptions();
2728
//dom加载完毕就算导航完成
28-
navigateOptions.setWaitUntil(Collections.singletonList("domcontentloaded"));
29+
navigateOptions.setWaitUntil(Collections.singletonList(PuppeteerLifeCycle.valueOf("domcontentloaded")));
2930
page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3",navigateOptions);
3031
page.goTo("https://detail.tmall.com/item.htm?id=616839388072",navigateOptions);
3132

example/src/main/java/com/ruiyun/example/PageGoForwardExample.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
import com.ruiyun.jvppeteer.core.page.Page;
66
import com.ruiyun.jvppeteer.options.LaunchOptions;
77
import com.ruiyun.jvppeteer.options.LaunchOptionsBuilder;
8-
import com.ruiyun.jvppeteer.options.PageNavigateOptions;
8+
import com.ruiyun.jvppeteer.options.GoToOptions;
9+
import com.ruiyun.jvppeteer.options.PuppeteerLifeCycle;
910

1011
import java.util.ArrayList;
1112
import java.util.Collections;
@@ -24,9 +25,9 @@ public static void main(String[] args) throws Exception {
2425

2526
Page page = browser.newPage();
2627

27-
PageNavigateOptions navigateOptions = new PageNavigateOptions();
28+
GoToOptions navigateOptions = new GoToOptions();
2829
//dom加载完毕就算导航完成
29-
navigateOptions.setWaitUntil(Collections.singletonList("domcontentloaded"));
30+
navigateOptions.setWaitUntil(Collections.singletonList(PuppeteerLifeCycle.valueOf("domcontentloaded")));
3031
page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3",navigateOptions);
3132
page.goTo("https://detail.tmall.com/item.htm?id=616839388072",navigateOptions);
3233

example/src/main/java/com/ruiyun/example/PageMetricsExample.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
import com.ruiyun.jvppeteer.core.page.Page;
77
import com.ruiyun.jvppeteer.options.LaunchOptions;
88
import com.ruiyun.jvppeteer.options.LaunchOptionsBuilder;
9-
import com.ruiyun.jvppeteer.options.PageNavigateOptions;
9+
import com.ruiyun.jvppeteer.options.GoToOptions;
10+
import com.ruiyun.jvppeteer.options.PuppeteerLifeCycle;
1011
import com.ruiyun.jvppeteer.protocol.performance.Metrics;
1112

1213
import java.util.ArrayList;
13-
import java.util.Arrays;
1414
import java.util.Collections;
1515

1616
public class PageMetricsExample {
@@ -28,9 +28,9 @@ public static void main(String[] args) throws Exception {
2828

2929
Page page = browser.newPage();
3030

31-
PageNavigateOptions navigateOptions = new PageNavigateOptions();
31+
GoToOptions navigateOptions = new GoToOptions();
3232
//dom加载完毕就算导航完成
33-
navigateOptions.setWaitUntil(Collections.singletonList("domcontentloaded"));
33+
navigateOptions.setWaitUntil(Collections.singletonList(PuppeteerLifeCycle.valueOf("domcontentloaded")));
3434
//page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3",navigateOptions);
3535
page.goTo("https://detail.tmall.com/item.htm?id=616839388072",navigateOptions);
3636

example/src/main/java/com/ruiyun/example/PageMouseExample.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
import com.ruiyun.jvppeteer.core.page.Page;
77
import com.ruiyun.jvppeteer.options.LaunchOptions;
88
import com.ruiyun.jvppeteer.options.LaunchOptionsBuilder;
9-
import com.ruiyun.jvppeteer.options.PageNavigateOptions;
9+
import com.ruiyun.jvppeteer.options.GoToOptions;
10+
import com.ruiyun.jvppeteer.options.PuppeteerLifeCycle;
1011

1112
import java.io.IOException;
1213
import java.util.ArrayList;
13-
import java.util.Arrays;
1414
import java.util.Collections;
1515
import java.util.concurrent.ExecutionException;
1616

@@ -29,9 +29,9 @@ public static void main(String[] args) throws IOException, ExecutionException, I
2929

3030
Page page = browser.newPage();
3131

32-
PageNavigateOptions navigateOptions = new PageNavigateOptions();
32+
GoToOptions navigateOptions = new GoToOptions();
3333
//dom加载完毕就算导航完成
34-
navigateOptions.setWaitUntil(Collections.singletonList("domcontentloaded"));
34+
navigateOptions.setWaitUntil(Collections.singletonList(PuppeteerLifeCycle.valueOf("domcontentloaded")));
3535
page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3", navigateOptions);
3636

3737
// Using ‘page.mouse’ to trace a 100x100 square.

example/src/main/java/com/ruiyun/example/PagePDFExample3.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.io.IOException;
1313
import java.util.ArrayList;
1414
import java.util.concurrent.ExecutionException;
15+
import java.util.concurrent.ForkJoinPool;
1516

1617
public class PagePDFExample3 {
1718

@@ -31,15 +32,15 @@ public static void main(String[] args) throws IOException, InterruptedException,
3132
page2.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3");
3233
Page page3 = browser.newPage();
3334
page3.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3");
34-
Helper.commonExecutor().submit(() -> {
35+
ForkJoinPool.commonPool().submit(() -> {
3536
//page2.emulateVisionDeficiency(VisionDeficiency.DEUTERANOPIA);
3637
try {
3738
page2.pdf("deuteranopia.pdf");
3839
} catch (IOException e) {
3940
e.printStackTrace();
4041
}
4142
});
42-
Helper.commonExecutor().submit(() -> {
43+
ForkJoinPool.commonPool().submit(() -> {
4344
//page3.emulateVisionDeficiency(VisionDeficiency.BLURREDVISION);
4445
try {
4546
page3.pdf("blurred-vision.pdf");

example/src/main/java/com/ruiyun/example/RequestInterceptionExample.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44
import com.ruiyun.jvppeteer.core.browser.Browser;
55
import com.ruiyun.jvppeteer.core.browser.BrowserFetcher;
66
import com.ruiyun.jvppeteer.core.page.Page;
7-
import com.ruiyun.jvppeteer.options.Device;
87
import com.ruiyun.jvppeteer.options.LaunchOptions;
98
import com.ruiyun.jvppeteer.options.LaunchOptionsBuilder;
10-
import com.ruiyun.jvppeteer.options.PageNavigateOptions;
9+
import com.ruiyun.jvppeteer.options.GoToOptions;
10+
import com.ruiyun.jvppeteer.options.PuppeteerLifeCycle;
1111

1212
import java.util.ArrayList;
13-
import java.util.Arrays;
1413
import java.util.Collections;
1514

1615
public class RequestInterceptionExample {
@@ -26,9 +25,9 @@ public static void main(String[] args) throws Exception {
2625
Browser browser = Puppeteer.launch(options);
2726
Page page = browser.newPage();
2827

29-
PageNavigateOptions options1 = new PageNavigateOptions();
28+
GoToOptions options1 = new GoToOptions();
3029
//如果不设置 domcontentloaded 算页面导航完成的话,那么goTo方法会超时,因为图片请求被拦截了,页面不会达到loaded阶段
31-
options1.setWaitUntil(Collections.singletonList("domcontentloaded"));
30+
options1.setWaitUntil(Collections.singletonList(PuppeteerLifeCycle.valueOf("domcontentloaded")));
3231

3332
page.setRequestInterception(true);
3433
//拦截请求

example/src/main/java/com/ruiyun/example/sometest/ParameterTest.java

-43
This file was deleted.

pom.xml

+6
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
<commons.compress.version>1.26.0</commons.compress.version>
5252
<zip4j.version>2.11.3</zip4j.version>
5353
<jna.version>5.13.0</jna.version>
54+
<rxjava.version>3.1.8</rxjava.version>
5455
<!-- Maven plugin versions -->
5556
<bnd.maven.plugin.version>4.3.1</bnd.maven.plugin.version>
5657
<maven.compiler.plugin.version>3.7.0</maven.compiler.plugin.version>
@@ -145,6 +146,11 @@
145146
<artifactId>jna</artifactId>
146147
<version>${jna.version}</version>
147148
</dependency>
149+
<dependency>
150+
<groupId>io.reactivex.rxjava3</groupId>
151+
<artifactId>rxjava</artifactId>
152+
<version>${rxjava.version}</version>
153+
</dependency>
148154
</dependencies>
149155
<build>
150156
<!-- configured plugins -->

src/main/java/com/ruiyun/jvppeteer/core/Constant.java

+15-15
Original file line numberDiff line numberDiff line change
@@ -118,21 +118,21 @@ public interface Constant {
118118
/**
119119
* 从浏览器的websocket接受到消息中有以下这些字段,在处理消息用到这些字段
120120
*/
121-
String RECV_MESSAGE_METHOD_PROPERTY = "method";
122-
String RECV_MESSAGE_PARAMS_PROPERTY = "params";
123-
String RECV_MESSAGE_ID_PROPERTY = "id";
124-
String RECV_MESSAGE_RESULT_PROPERTY = "result";
125-
String RECV_MESSAGE_SESSION_ID_PROPERTY = "sessionId";
126-
String RECV_MESSAGE_TARGETINFO_PROPERTY = "targetInfo";
127-
String RECV_MESSAGE_TYPE_PROPERTY = "type";
128-
String RECV_MESSAGE_ERROR_PROPERTY = "error";
129-
String RECV_MESSAGE_ERROR_MESSAGE_PROPERTY = "message";
130-
String RECV_MESSAGE_ERROR_DATA_PROPERTY = "data";
131-
String RECV_MESSAGE_TARFETINFO_TARGETID_PROPERTY = "targetId";
132-
String RECV_MESSAGE_STREAM_PROPERTY = "stream";
133-
String RECV_MESSAGE_STREAM_EOF_PROPERTY = "eof";
134-
String RECV_MESSAGE_STREAM_DATA_PROPERTY = "data";
135-
String RECV_MESSAGE_BASE64ENCODED_PROPERTY = "base64Encoded";
121+
String MESSAGE_METHOD_PROPERTY = "method";
122+
String MESSAGE_PARAMS_PROPERTY = "params";
123+
String MESSAGE_ID_PROPERTY = "id";
124+
String MESSAGE_RESULT_PROPERTY = "result";
125+
String MESSAGE_SESSION_ID_PROPERTY = "sessionId";
126+
String MESSAGE_TARGETINFO_PROPERTY = "targetInfo";
127+
String MESSAGE_TYPE_PROPERTY = "type";
128+
String MESSAGE_ERROR_PROPERTY = "error";
129+
String MESSAGE_MESSAGE_PROPERTY = "message";
130+
String MESSAGE_DATA_PROPERTY = "data";
131+
String MESSAGE_TARGETID_PROPERTY = "targetId";
132+
String MESSAGE_STREAM_PROPERTY = "stream";
133+
String MESSAGE_EOF_PROPERTY = "eof";
134+
String MESSAGE_STREAM_DATA_PROPERTY = "data";
135+
String MESSAGE_BASE64ENCODED_PROPERTY = "base64Encoded";
136136

137137

138138
/**

0 commit comments

Comments
 (0)