如何用Playwright-Java验证FDIC失败银行列表共570条数据?
问题分析与解决方案
核心问题
你的代码没有等待页面加载完所有570条数据就执行了count(),导致获取的是未完全加载时的行数,而非最终总数。不需要手动滚动页面,但必须等待数据加载完成。
修改后的代码
Playwright playwright = Playwright.create(); Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false)); BrowserContext browserContext = browser.newContext(); Page page = browserContext.newPage(); page.navigate("https://www.fdic.gov/bank-failures/failed-bank-list"); // 选择"All"选项并提交 Locator dropdown = page.locator("[id=edit-items-per-page]"); dropdown.selectOption("All"); page.locator("[id=edit-submit-failed-bank-list]").click(); // 等待页面网络请求完全空闲,确保所有数据加载完毕 page.waitForLoadState(LoadState.NETWORKIDLE); // 或者直接等待目标行数出现,验证更精准 Locator listLocator = page.locator(".sticky-table tbody tr"); listLocator.waitFor(new Locator.WaitForOptions().setCount(570)); // 输出最终统计数量 System.out.println(listLocator.count()); // 清理资源 browser.close(); playwright.close();
关键改进点
- 添加等待逻辑:
page.waitForLoadState(LoadState.NETWORKIDLE):等待页面所有网络请求停止(超过500ms无新请求),确保数据全部加载完成。listLocator.waitFor(...):直接等待目标行数出现,精准匹配你的验证需求。
- 资源清理:补充
browser.close()和playwright.close(),避免浏览器资源泄漏。
额外说明
针对该FDIC页面,选择"All"并点击Apply后会一次性加载所有失败银行数据,无需手动滚动触发加载。如果后续遇到需要滚动才渲染的动态表格,可使用listLocator.scrollIntoViewIfNeeded()循环滚动,但此场景下完全不需要。
内容的提问来源于stack exchange,提问作者codeMonster
相关产品推荐
相关产品推荐

