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

使用Selenium向reroom.ai上传图片无响应,求解决方案

问题描述

我使用Python和Selenium编写了脚本,尝试将本地文件夹中的图片上传至reroom.ai网站。该网站需通过Google登录才能进入上传页面,登录完成后会自动跳转至目标页面,点击Full Remake按钮后,脚本试图通过“Drag & Drop your image or Browse”按钮上传图片,但选中Browse按钮后无任何反应。以下是我的代码:

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = 'https://reroom.ai/'

options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

gmail = ""     #gamil address here
password = ""  #password here

driver.get(url)
original_window = driver.current_window_handle
driver.maximize_window()
try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@type='button'][contains(.,'Accept')]"))).click()
except Exception as err:
    pass
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[./img[@alt='google']][contains(.,'Sign in with Google')]"))).click()
time.sleep(5)
WebDriverWait(driver, 20).until(EC.new_window_is_opened)
driver.switch_to.window([window for window in driver.window_handles if window != original_window][0])
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#identifierId"))).send_keys(gmail)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#identifierNext"))).click()
time.sleep(5)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='Passwd']"))).send_keys(password)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button/span[.='Next']"))).click()
driver.switch_to.window(original_window)
time.sleep(5)
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//span[.='Full Remake']"))).click()
image_path = r'C:\Users\C.L\Desktop\Jonathan\c7OgQ1Qh.jpeg'
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img[class='object-contain']")))
time.sleep(5)
file_input = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='filepond--label-action'][.='Browse']")))
time.sleep(5)
file_input.send_keys(image_path)
解决方案

问题核心是:你定位的Browse是页面上的文本按钮元素,但网站的文件上传功能依赖隐藏的<input type="file">原生控件,而非可见的按钮。直接对可见按钮使用send_keys不会触发上传逻辑,必须操作真实的文件输入框。

修改后的代码如下(替换原代码中最后几行关于文件上传的部分):

image_path = r'C:\Users\C.L\Desktop\Jonathan\c7OgQ1Qh.jpeg'
# 等待文件上传控件加载完成
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[type='file'][accept='image/*']")))
# 定位隐藏的文件输入框
file_input = driver.find_element(By.CSS_SELECTOR, "input[type='file'][accept='image/*']")
# 直接向输入框发送本地文件路径
file_input.send_keys(image_path)

完整的修改后代码:

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = 'https://reroom.ai/'

options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

gmail = ""     #gamil address here
password = ""  #password here

driver.get(url)
original_window = driver.current_window_handle
driver.maximize_window()
try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@type='button'][contains(.,'Accept')]"))).click()
except Exception as err:
    pass
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[./img[@alt='google']][contains(.,'Sign in with Google')]"))).click()
time.sleep(5)
WebDriverWait(driver, 20).until(EC.new_window_is_opened)
driver.switch_to.window([window for window in driver.window_handles if window != original_window][0])
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#identifierId"))).send_keys(gmail)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#identifierNext"))).click()
time.sleep(5)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='Passwd']"))).send_keys(password)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button/span[.='Next']"))).click()
driver.switch_to.window(original_window)
time.sleep(5)
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//span[.='Full Remake']"))).click()
image_path = r'C:\Users\C.L\Desktop\Jonathan\c7OgQ1Qh.jpeg'
# 等待文件上传控件加载完成
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[type='file'][accept='image/*']")))
# 定位隐藏的文件输入框
file_input = driver.find_element(By.CSS_SELECTOR, "input[type='file'][accept='image/*']")
# 直接向输入框发送本地文件路径
file_input.send_keys(image_path)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:00:11