如何使用python + selenium上传文件?

时间:2017-10-30 09:18:07

标签: python selenium selenium-webdriver

我需要上传文件。我有“选择文件”表格。我点击“选择文件”按钮,在上传开始后在窗口中选择文件。

这是表格。

<form id="fileupload" method="POST" enctype="multipart/form-data" data-confirm="true">
<div class="uploadForm">
<div class="browseUploadLeft">
<i class="icon icon-discontinued-upload"></i>
<h3>Browse and choose</h3>
<p>files from your computer</p>
</div>
<div class="browseUploadRight">
<p class="browseInfo is-hidden">Need help? See <span>Upload Rules</span></p>
<span class="button button-pink buttonFullWidth">choose files to upload
<input type="file" id="fileUploadField" name="Filedata" multiple class="filemultiple video" />
</span>
<p class="sizeNote">Maximum file size limit is 10GB</p>
</div>
</div>
<input type="hidden" name="userId" value="8996317" />
<input type="hidden" name="videoId" class='be_video_id' id='be_video_id' value="" />
<input type="hidden" id="_token" name="_token" value="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJodHRwOlwvXC93d3cueW91cG9ybi5jb20lIiwic3ViIjoiODk5NjMxNyIsImF1ZCI6Imh0dHA6XC9cL3d3dy55b3Vwb3JuLmNvbSUiLCJpYXQiOjE1MDkzNTI5MjEsImV4cCI6MTUwOTM4ODkyMX0.DSMPckUG3ZcL6Zrbn1WWrLgLzJ_tdw3TOZ2hnb2z60qSWMMpfZghJnrliSkwAQVRNjl6H-VKDCZBrlKvGwO0WQ" />
</form>

我想用python + selenium做这件事。我有代码。

browser = webdriver.Firefox()
browser.get("url") 
time.sleep(10)
browser.find_element_by_id("fileUploadField").click()
file = browser.find_element_by_id("fileUploadField")
file.send_keys("1.m4")
file.submit()

但是在执行代码时我遇到了错误。

      File "yp.py", line 40, in <module>
        file.submit()
......

       Message: Element is no longer attached to the DOM

如何以正确的方式将文件发送到此表单?如何启动上传文件?

2 个答案:

答案 0 :(得分:1)

首先安装win32com.client。在cmd中安装win32com.client类型

pip install pypiwin32

现在点击上传后,添加以下代码以传递需要上传的文件的地址。

browser = webdriver.Firefox()
browser.get("url") 
time.sleep(10)
browser.find_element_by_id("fileUploadField").click()
shell = win32com.client.Dispatch("WScript.Shell")
shell.Sendkeys("D:\\FileLocation\\1.m4")
shell.Sendkeys("{ENTER}")

注意:如果你在安装win32com.client时遇到任何问题,那么检查你是否已经为32位操作系统安装了python,如果没有,那么确保你已经安装了32位的python,即使你的操作系统是64位操作系统。安装没有任何问题,win32com.client将在那里工作

答案 1 :(得分:0)

尝试设置完整路径:

{{1}}