Python Playwright上传Google Photos:如何关闭弹出的文件选择窗口
解决Python Playwright上传Google Photos时弹出系统文件窗口的问题
核心问题原因
你点击「上传>电脑」后触发了浏览器默认的系统文件选择弹窗,这是因为该按钮的点击事件会自动唤起系统弹窗,后续再设置input[type="file"]的文件时,弹窗已经弹出——而这是系统级窗口,无法通过Playwright直接关闭。
解决方案
方法1:直接定位隐藏的文件上传元素(推荐)
Google Photos的input[type="file"]元素实际已存在,只是被CSS隐藏,Playwright可直接定位并强制设置文件,无需触发弹窗:
# 用accept属性过滤图片/视频类型,选择器更稳定 file_input = page.locator('input[type="file"][accept="image/*,video/*"]') # 强制设置文件,忽略元素隐藏状态 file_input.set_input_files('F:/python practice/googlephotosbot/big data.jpeg', force=True)
方法2:拦截文件选择对话框
如果必须通过点击「上传>电脑」加载input元素,可通过Playwright的文件选择器监听功能捕获弹窗,直接设置文件避免系统窗口弹出:
# 监听即将出现的文件选择对话框 with page.expect_file_chooser() as fc_info: # 用文本定位按钮,避免依赖易变的class名称 page.locator('text="上传"').click() page.locator('text="电脑"').click() # 获取对话框实例并设置文件 file_chooser = fc_info.value file_chooser.set_files('F:/python practice/googlephotosbot/big data.jpeg')
优化建议
- 替换选择器时,优先使用
text="文本内容"或[aria-label="xxx"]这类语义化选择器,避免依赖频繁变化的class - 不要用
sleep(),改用Playwright的等待方法提升稳定性:page.locator('text="上传"').click() page.wait_for_locator('text="电脑"').click()
内容的提问来源于stack exchange,提问作者Md Tanzin Islam
相关产品推荐
相关产品推荐

