Playwright自动化:如何验证CSV下载按钮点击后的文件下载有效性
使用Playwright验证CSV下载功能的自动化脚本
前置准备
先确保安装Playwright及所需浏览器:
pip install playwright playwright install chromium
核心脚本实现
以下是Python版本的验证脚本,可直接适配你的场景:
from playwright.sync_api import sync_playwright import os def verify_csv_download(): # 自定义下载目录,自动创建不存在的目录 download_dir = "./csv_downloads" os.makedirs(download_dir, exist_ok=True) with sync_playwright() as p: # 启动浏览器并配置下载参数 browser = p.chromium.launch(headless=False) # 调试时保留可视化,生产可改为True context = browser.new_context( accept_downloads=True, downloads_path=download_dir ) page = context.new_page() # 导航到目标页面 page.goto("你的目标页面URL") # 定位并点击CSV下载按钮(根据实际页面调整选择器) # 示例:用文本定位,也可改用CSS选择器如page.locator("#csv-btn") page.locator("text=CSV下载").click() # 等待下载事件完成,获取文件路径 download = page.wait_for_event("download") downloaded_file_path = download.path() # 验证文件是否成功生成 assert os.path.exists(downloaded_file_path), "CSV文件下载失败:未找到文件" # 可选:验证文件内容有效性(按需添加) with open(downloaded_file_path, "r", encoding="utf-8") as file: content = file.read() # 替换为你的业务校验规则,比如检查表头 assert "用户ID,用户名,注册时间" in content, "CSV文件内容不符合预期" print("CSV下载验证通过") browser.close() if __name__ == "__main__": verify_csv_download()
关键注意事项
- 选择器调整:如果文本定位失败,改用按钮的
id、class或XPath,比如page.locator(".download-btn.csv")。 - 权限问题:确保脚本对下载目录有读写权限,避免因权限不足导致下载失败。
- 无头模式:生产环境运行时,将
launch(headless=False)改为headless=True,取消浏览器界面显示。 - API调用排查:如果点击后未触发API,可在脚本中添加
page.on("request", lambda request: print(request.url))监听所有请求,确认是否真的无API调用,辅助排查问题。
内容的提问来源于stack exchange,提问作者Gopal Sakhiya
相关产品推荐
相关产品推荐

