Python中使用selenium上传文件时提示“File not found”错误,如何解决?
上传文件代码如下: browser.find_element_by_xpath('//div[@id="uploadifive_filepathupload"]/input[2]').send_keys(ReadBugFile.FileAddress)
ReadBugFile 是一个 txt 文件,文件里面的有需要上传的文件路径。然后通过读取这个 txt 文件里面的路径,传入 send_keys()方法。但是提示文件未找到。
如果直接传入需要上传的文件地址路径,就是正常的。是否与 send_keys()可以接收的参数有关?
麻烦了解的 V 友指教。感谢!!
Python中使用selenium上传文件时提示“File not found”错误,如何解决?
遇到Selenium上传文件报“File not found”错误,通常是因为传给send_keys()方法的文件路径格式不对或者文件确实不存在。核心是要给绝对路径,并且处理好路径分隔符。
最直接可靠的解决方案是使用Python的os.path模块来构建绝对路径。下面是一个完整的示例:
from selenium import webdriver
from selenium.webdriver.common.by import By
import os
# 获取当前脚本所在目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建要上传文件的绝对路径
file_path = os.path.join(current_dir, "test_file.txt")
# 确保文件存在
if not os.path.exists(file_path):
# 如果文件不存在,可以创建一个示例文件
with open(file_path, "w") as f:
f.write("This is a test file for upload.")
driver = webdriver.Chrome()
driver.get("https://example.com/upload") # 替换为你的上传页面
# 找到文件上传input元素(type="file")
upload_element = driver.find_element(By.CSS_SELECTOR, "input[type='file']")
# 使用绝对路径上传文件
upload_element.send_keys(file_path)
# 后续操作...
关键点:
os.path.abspath(__file__)获取当前脚本的绝对路径os.path.join()用于跨平台拼接路径(Windows用\,Linux/Mac用/)- 上传前用
os.path.exists()检查文件是否存在 - 文件上传input元素的type属性必须是"file"
如果页面上传元素是隐藏的或者通过JS触发,可能需要先执行JavaScript让它可见。但大多数情况下,直接用send_keys()传绝对路径就能解决。
总结:用绝对路径,检查文件是否存在。
ReadBugFile 你说是一个 txt 文件, 在 Python 里也就是一个字符串
字符串哪里来的 FileAddress 方法呢.
最简单的处理方法:
把文件里面的路径读取出来, 放到一个变量 file_path 里面
然后 send_keys(file_path)
上午就是这样做的,没成功,刚才重新写了一下代码,就好了。。。我也无语了,应该是哪边细节写错了,感谢感谢!

