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

如何使用Selenium在文件上传前获取文件大小?

嘿,我太懂你这种卡了好几天的感觉了!你之前的写法行不通,是因为Selenium的GetAttribute没法直接访问DOM元素的JavaScript对象属性——files是input元素的JS属性,不是HTML标签上的原生属性,所以直接用GetAttribute肯定拿不到结果。

给你个靠谱的解决方案,用Selenium的JavaScript执行器来获取文件大小,这才是正确的打开方式:

// 定位文件上传控件
IWebElement fileUpload = driver.FindElement(By.Id("FileUpload"));
// 把driver转换为JS执行器
IJavaScriptExecutor jsExecutor = (IJavaScriptExecutor)driver;
// 执行JS代码获取文件大小(单位为字节)
long? fileSizeBytes = (long?)jsExecutor.ExecuteScript("return arguments[0].files[0]?.size;", fileUpload);

if (fileSizeBytes.HasValue)
{
    // 可选:转换为KB格式,保留两位小数
    double fileSizeKB = fileSizeBytes.Value / 1024.0;
    Console.WriteLine($"选中的文件大小是:{fileSizeKB:F2} KB");
}
else
{
    Console.WriteLine("还未选择任何文件哦!");
}

几个关键点给你提个醒:

  • 必须确保用户已经选中了文件,不然files[0]会是null,代码里用了?.可选链操作符,避免直接访问size导致报错
  • 拿到的默认值是字节数,要转成KB/MB的话自己做除法即可
  • 如果是支持多选的上传控件(input标签加了multiple属性),可以遍历arguments[0].files数组,逐个获取每个文件的大小

这样应该就能顺利拿到文件大小啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:37:50