Playwright自动化导航时出现空白页问题求助
问题排查建议:Playwright测试时页面空白且请求错误
检查Playwright浏览器依赖与版本
运行playwright install --with-deps确保浏览器及系统依赖完整,缺失底层库可能导致网络请求异常。同时对比手动测试用的浏览器版本和Playwright启动的浏览器版本,版本差异可能引发兼容性问题,可通过指定channel参数匹配手动版本:browser = await chromium.launch(channel="chrome")模拟真实用户环境
Playwright默认无头模式的环境和手动操作有差异,先切换到有头模式测试:browser = await chromium.launch(headless=False)另外添加真实用户代理、启用缓存,尽量贴近手动操作的请求特征:
await page.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36") await page.setExtraHTTPHeaders({"Cache-Control": "max-age=0"})捕获并分析请求错误详情
给页面绑定请求失败事件,打印具体错误信息,定位是请求超时、资源加载失败还是其他问题:page.on("requestfailed", lambda req: print(f"请求失败: {req.url} | 错误信息: {req.failure.errorText}"))如果是跨域或网站反检测导致的请求被拦截,可尝试禁用Web安全(仅测试环境使用):
browser = await chromium.launch(args=["--disable-web-security", "--disable-features=IsolateOrigins,site-per-process"])调整等待策略
点击提交后不要立刻执行验证,等待页面完全加载或关键元素出现:await page.click("#submit-button") # 等待网络空闲(无新请求1秒)再执行后续操作 await page.waitForNavigation(waitUntil="networkidle") # 或者等待目标页面的核心元素加载完成 await page.waitForSelector("#order-summary", timeout=10000)重置页面上下文
每次测试前创建新的页面上下文,避免之前测试的缓存、Cookie残留干扰当前流程:context = await browser.new_context() page = await context.new_page()
内容的提问来源于stack exchange,提问作者Gaurav Bisht
相关产品推荐
相关产品推荐

