You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium上传文件异常:尝试传2个却上传3个及以上的问题求助

问题原因与解决方案

为什么循环两次却上传了3张?

Facebook Marketplace的图片上传控件逻辑特殊:

  • 首次给input[type=file]发送文件路径后,这个输入框不会失效,仍然可以接收新的文件路径(多个路径用换行符分隔)。
  • 你的循环每次都定位到页面上第一个文件输入框,第一次上传1张;第二次再次给这个输入框发送路径时,它会把新路径追加到已有的路径列表中,导致这个输入框一次性上传2张(重复的同一张图)。
  • 最终总数量就是第一次的1张 + 第二次的2张 = 3张。

两种解决方法

方法1:每次定位最新的文件输入框

上传一张图片后,页面会新增一个新的input[type=file]用于继续上传。循环时定位最后一个输入框,确保每次都用新的控件上传:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.facebook.com/marketplace/create/item')

# 上传2张图片
for _ in range(2):
    # 获取所有文件输入框,取最后一个
    file_inputs = driver.find_elements(By.XPATH, '//input[@type="file"]')
    file_inputs[-1].send_keys('C:/img_from_url.jpg')
    # 等待图片上传完成,确保页面生成新的输入框
    time.sleep(2)

方法2:一次性上传多张图片

直接给同一个输入框发送多个文件路径(用换行符\n分隔),无需循环,一次完成上传:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.facebook.com/marketplace/create/item')

# 多张图片路径用换行符分隔
image_paths = 'C:/img_from_url.jpg\nC:/img_from_url.jpg'
driver.find_element(By.XPATH, '//input[@type="file"]').send_keys(image_paths)

内容的提问来源于stack exchange,提问作者LikeLinux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:40:32