enable screenshot
This commit is contained in:
parent
d635a35cc0
commit
ef50ca0371
@ -124,7 +124,9 @@ public class EtsScraper {
|
|||||||
dateStrFileName = targetDate.format(DateTimeFormatter.ofPattern("yyyyMMdd_HHmm"));
|
dateStrFileName = targetDate.format(DateTimeFormatter.ofPattern("yyyyMMdd_HHmm"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Path savedFile = Path.of("downloads").resolve("三联单列表_" + dateStrFileName + ".xls");
|
Path downloadDir = Path.of("downloads").resolve(dateStrFileName);
|
||||||
|
Files.createDirectories(downloadDir);
|
||||||
|
Path savedFile = downloadDir.resolve("三联单列表_" + dateStrFileName + ".xls");
|
||||||
|
|
||||||
if (!isPolling && java.nio.file.Files.exists(savedFile) && java.nio.file.Files.size(savedFile) > 0) {
|
if (!isPolling && java.nio.file.Files.exists(savedFile) && java.nio.file.Files.size(savedFile) > 0) {
|
||||||
System.out.println("[+] File already exists: " + savedFile);
|
System.out.println("[+] File already exists: " + savedFile);
|
||||||
@ -158,6 +160,7 @@ public class EtsScraper {
|
|||||||
try {
|
try {
|
||||||
// Navigate to frame.html first to establish session/cookies
|
// Navigate to frame.html first to establish session/cookies
|
||||||
System.out.println("[*] Establishing session via " + FRAME_URL);
|
System.out.println("[*] Establishing session via " + FRAME_URL);
|
||||||
|
screenshot(page, "1_session_established", downloadDir);
|
||||||
page.navigate(FRAME_URL, new Page.NavigateOptions()
|
page.navigate(FRAME_URL, new Page.NavigateOptions()
|
||||||
.setTimeout(30000)
|
.setTimeout(30000)
|
||||||
.setWaitUntil(WaitUntilState.DOMCONTENTLOADED));
|
.setWaitUntil(WaitUntilState.DOMCONTENTLOADED));
|
||||||
@ -178,6 +181,7 @@ public class EtsScraper {
|
|||||||
|
|
||||||
// Close dialog again after page reload
|
// Close dialog again after page reload
|
||||||
closeNotificationDialog(page);
|
closeNotificationDialog(page);
|
||||||
|
screenshot(page, "2_after_close_dialog", downloadDir);
|
||||||
|
|
||||||
// Recognize captcha and perform login
|
// Recognize captcha and perform login
|
||||||
boolean loggedin = doLoginWithCaptcha(page);
|
boolean loggedin = doLoginWithCaptcha(page);
|
||||||
@ -185,6 +189,7 @@ public class EtsScraper {
|
|||||||
if (loggedin) {
|
if (loggedin) {
|
||||||
System.out.println("[+] Login successful!");
|
System.out.println("[+] Login successful!");
|
||||||
sleep(2000);
|
sleep(2000);
|
||||||
|
screenshot(page, "4_after_login", downloadDir);
|
||||||
|
|
||||||
System.out.println("[+] Page title: " + page.title());
|
System.out.println("[+] Page title: " + page.title());
|
||||||
System.out.println("[+] Page URL: " + page.url());
|
System.out.println("[+] Page URL: " + page.url());
|
||||||
@ -193,6 +198,7 @@ public class EtsScraper {
|
|||||||
System.out.println("[*] Clicking 三联单 menu...");
|
System.out.println("[*] Clicking 三联单 menu...");
|
||||||
page.locator("#module_2094F683-C542-4904-B33E-0D227C4DE199").first().click();
|
page.locator("#module_2094F683-C542-4904-B33E-0D227C4DE199").first().click();
|
||||||
sleep(3000);
|
sleep(3000);
|
||||||
|
screenshot(page, "5_after_sanliandan_menu", downloadDir);
|
||||||
System.out.println("[+] 三联单 page title: " + page.title());
|
System.out.println("[+] 三联单 page title: " + page.title());
|
||||||
|
|
||||||
// 设置日期筛选
|
// 设置日期筛选
|
||||||
@ -218,6 +224,7 @@ public class EtsScraper {
|
|||||||
System.out.println("[*] Setting end date to: " + dateStrFormatted);
|
System.out.println("[*] Setting end date to: " + dateStrFormatted);
|
||||||
page.locator("#Search_ThreeBillList_endWdate").first().fill(dateStrFormatted);
|
page.locator("#Search_ThreeBillList_endWdate").first().fill(dateStrFormatted);
|
||||||
sleep(500);
|
sleep(500);
|
||||||
|
screenshot(page, "6_after_date_set", downloadDir);
|
||||||
} else {
|
} else {
|
||||||
System.out.println("[!] End date element not found");
|
System.out.println("[!] End date element not found");
|
||||||
}
|
}
|
||||||
@ -229,6 +236,7 @@ public class EtsScraper {
|
|||||||
page.locator("#Search_ThreeBillList_Button").first().click();
|
page.locator("#Search_ThreeBillList_Button").first().click();
|
||||||
});
|
});
|
||||||
page.waitForTimeout(3 * 1000);
|
page.waitForTimeout(3 * 1000);
|
||||||
|
screenshot(page, "7_after_query", downloadDir);
|
||||||
} else {
|
} else {
|
||||||
System.out.println("[!] Query button not found");
|
System.out.println("[!] Query button not found");
|
||||||
}
|
}
|
||||||
@ -244,6 +252,7 @@ public class EtsScraper {
|
|||||||
|
|
||||||
System.out.println("[*] Waiting for download to complete...");
|
System.out.println("[*] Waiting for download to complete...");
|
||||||
dl.saveAs(savedFile);
|
dl.saveAs(savedFile);
|
||||||
|
screenshot(page, "8_after_export", downloadDir);
|
||||||
|
|
||||||
long totalBytes = savedFile.toFile().length();
|
long totalBytes = savedFile.toFile().length();
|
||||||
System.out.println("[+] Download saved to: " + savedFile + " (" + totalBytes + " bytes)");
|
System.out.println("[+] Download saved to: " + savedFile + " (" + totalBytes + " bytes)");
|
||||||
@ -335,6 +344,7 @@ public class EtsScraper {
|
|||||||
Path captchaPath = SCREENSHOT_DIR.resolve("captcha.png");
|
Path captchaPath = SCREENSHOT_DIR.resolve("captcha.png");
|
||||||
java.nio.file.Files.write(captchaPath, body);
|
java.nio.file.Files.write(captchaPath, body);
|
||||||
System.out.println("[+] Captcha saved to: " + captchaPath);
|
System.out.println("[+] Captcha saved to: " + captchaPath);
|
||||||
|
screenshot(page, "3_after_captcha", downloadDir);
|
||||||
System.out.println("[+] Captcha size: " + body.length + " bytes");
|
System.out.println("[+] Captcha size: " + body.length + " bytes");
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -374,16 +384,15 @@ public class EtsScraper {
|
|||||||
System.out.println("[*] Notification dialog closed");
|
System.out.println("[*] Notification dialog closed");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void screenshot(Page page, String name) {
|
private static void screenshot(Page page, String name, Path dir) {
|
||||||
try {
|
try {
|
||||||
String timestamp = LocalDateTime.now()
|
Path path = dir.resolve(name + ".png");
|
||||||
.format(DateTimeFormatter.ofPattern("yyyyMMdd_HHmm"));
|
|
||||||
Path path = SCREENSHOT_DIR.resolve(name + "_" + timestamp + ".png");
|
|
||||||
page.screenshot(new Page.ScreenshotOptions().setPath(path));
|
page.screenshot(new Page.ScreenshotOptions().setPath(path));
|
||||||
System.out.println("[+] Screenshot saved: " + path);
|
System.out.println("[+] Screenshot saved: " + path);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.err.println("[-] Screenshot failed: " + e.getMessage());
|
System.err.println("[-] Screenshot failed: " + e.getMessage());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sleep(long ms) {
|
public static void sleep(long ms) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user