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

如何在Python Selenium中通过if-else判断文件上传状态并继续执行

问题描述

文件上传完成后,页面会显示Upload successful!文本;多次上传错误时,页面元素会显示Upload Status。需求是通过if-else逻辑实现:无论上传成功或失败,都执行后续命令(返回上一页并处理下一个文件),但以下两段代码均无法正常工作,需要正确实现方式:

尝试的错误代码1

if WebDriverWait(driver, 300, 1).until(
    EC.text_to_be_present_in_element((By.XPATH, "//*"), "Upload successful!")
):
    print("uploaded")
    driver.back()
else:
    print("upload failed")
    driver.back()

尝试的错误代码2

myStr = WebDriverWait(driver, 300, 1).until(
    EC.text_to_be_present_in_element((By.XPATH, "//*"))
)

if myStr.txt.contains("Upload successful!"):
    print("uploaded")
    driver.back()
else:
    print("upload failed")
    driver.back()
问题分析
  1. 第一段代码:EC.text_to_be_present_in_element仅等待指定文本出现,若超时(即出现Upload Status)会直接抛出TimeoutException,不会进入else分支,导致失败逻辑无法执行。
  2. 第二段代码:EC.text_to_be_present_in_element必须传入第二个参数(目标文本),且该方法返回布尔值而非元素对象,因此myStr.txt.contains的写法完全错误。
正确实现方式

使用EC.any_of等待两种状态文本中的任意一种出现,避免超时报错;之后获取目标元素文本判断状态,最后统一执行后续操作:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

try:
    # 等待页面出现上传成功或失败的状态文本,超时300秒
    WebDriverWait(driver, 300, 1).until(
        EC.any_of(
            EC.text_to_be_present_in_element((By.XPATH, "//*"), "Upload successful!"),
            EC.text_to_be_present_in_element((By.XPATH, "//*"), "Upload Status")
        )
    )
    
    # 获取状态元素的文本(建议替换//*为具体的状态元素XPATH,提升准确性)
    status_text = driver.find_element(By.XPATH, "//*").text
    
    if "Upload successful!" in status_text:
        print("上传成功")
    else:
        print("上传失败")
    
    # 无论成功失败,执行后续操作
    driver.back()
    # 此处添加处理下一个文件的逻辑

except Exception as e:
    print(f"等待超时或发生异常: {str(e)}")
    # 异常场景下也可执行后续操作,根据需求调整
    driver.back()
优化建议
  • 避免使用//*定位元素,建议找到显示上传状态的具体元素(比如带特定class或id的容器),替换为更精准的XPATH(例如//div[@class='upload-status-container']),减少误判概率。
  • 可根据实际情况调整超时时间,300秒过长时可适当缩短。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:05:13