feat(playwright): 升级 Playwright 版本至 1.55.0升级 Playwright依赖版本以支持最新的浏览器自动化功能,并优化抖音和美团爬虫的登录等待逻辑,

使用 waitForCondition 替代手动轮询,提升代码可读性和稳定性。
- 抖音服务中增加浏览器关闭日志,使用 waitForCondition 设置 30 分钟超时等待登录完成
- 美团服务中同样优化为 waitForCondition 等待所需 cookie,并修正异常日志描述- 移除不必要的空行和旧版轮询逻辑,使代码更简洁
This commit is contained in:
wangchunxiang
2025-10-16 14:22:36 +08:00
parent f77a5b3d0b
commit d59eea3f30
3 changed files with 12 additions and 24 deletions

View File

@@ -14,7 +14,7 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>3.4.0</spring-boot.version> <spring-boot.version>3.4.0</spring-boot.version>
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version> <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
<playwright.version>1.40.0</playwright.version> <playwright.version>1.55.0</playwright.version>
<javafx.version>17.0.2</javafx.version> <javafx.version>17.0.2</javafx.version>
<javafx.maven.plugin.version>0.0.8</javafx.maven.plugin.version> <javafx.maven.plugin.version>0.0.8</javafx.maven.plugin.version>
</properties> </properties>

View File

@@ -37,21 +37,17 @@ public class FtbCrawlNetDy extends AbstractFtbCrawlNetBase implements FtbCrawlNe
// 监听浏览器关闭事件释放资源 // 监听浏览器关闭事件释放资源
browser.onDisconnected((brow) -> { browser.onDisconnected((brow) -> {
if (page != null && !page.isClosed()) { if (page != null && !page.isClosed()) {
log.info("抖音浏览器关闭事件");
page.close(); page.close();
} }
}); });
// 导航到登录页面 // 导航到登录页面
page.navigate(GlobalConfig.dyLoginPage, page.navigate(GlobalConfig.dyLoginPage,
new Page.NavigateOptions().setTimeout(6000000)); new Page.NavigateOptions().setTimeout(6000000));
while (!dyCookie.get()) { // 设置30分钟登录超时时间
try { Page.WaitForConditionOptions waitForConditionOptions = new Page.WaitForConditionOptions();
Thread.sleep(1000); waitForConditionOptions.setTimeout(30*60*1000);
} catch (InterruptedException e) { page.waitForCondition(dyCookie::get,waitForConditionOptions);
log.warn("等待过程中被中断", e);
Thread.currentThread().interrupt();
break;
}
}
// 关闭页面 // 关闭页面
super.showSuccessAlertAndClose(page,"抖音"); super.showSuccessAlertAndClose(page,"抖音");
} }

View File

@@ -10,7 +10,6 @@ import org.springframework.stereotype.Component;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
@Component(value = "ftbCrawlNetMt") @Component(value = "ftbCrawlNetMt")
@Slf4j @Slf4j
public class FtbCrawlNetMt extends AbstractFtbCrawlNetBase implements FtbCrawlNetBase { public class FtbCrawlNetMt extends AbstractFtbCrawlNetBase implements FtbCrawlNetBase {
@@ -36,6 +35,7 @@ public class FtbCrawlNetMt extends AbstractFtbCrawlNetBase implements FtbCrawlNe
// 监听浏览器关闭事件释放资源 // 监听浏览器关闭事件释放资源
browser.onDisconnected((brow) -> { browser.onDisconnected((brow) -> {
if (page != null && !page.isClosed()) { if (page != null && !page.isClosed()) {
log.info("美团浏览器关闭事件");
page.close(); page.close();
} }
}); });
@@ -43,22 +43,14 @@ public class FtbCrawlNetMt extends AbstractFtbCrawlNetBase implements FtbCrawlNe
// 导航到登录页面 // 导航到登录页面
page.navigate(GlobalConfig.mtLoginPage, page.navigate(GlobalConfig.mtLoginPage,
new Page.NavigateOptions().setTimeout(60000.0)); new Page.NavigateOptions().setTimeout(60000.0));
// 设置30分钟登录超时时间
// 等待用户登录并获取所需cookie Page.WaitForConditionOptions waitForConditionOptions = new Page.WaitForConditionOptions();
while (!(mtCookie.get() && dzCookie.get())) { waitForConditionOptions.setTimeout(30*60*1000);
try { page.waitForCondition(() -> mtCookie.get() && dzCookie.get(),waitForConditionOptions);
Thread.sleep(1000);
} catch (InterruptedException e) {
log.warn("等待过程中被中断", e);
Thread.currentThread().interrupt();
break;
}
}
log.info("已成功获取美团所有必需的cookie关闭页面");
// 关闭页面 // 关闭页面
super.showSuccessAlertAndClose(page,"美团"); super.showSuccessAlertAndClose(page,"美团");
} catch (Exception e) { } catch (Exception e) {
log.error("执行cookie拦截时发生错误", e); log.error("执行打开浏览器时发生错误", e);
} }
} }