【问题标题】:How to upload file using python+selenium?如何使用 python+selenium 上传文件?
【发布时间】:2017-10-30 09:18:06
【问题描述】:

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

这是表格。

<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

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

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案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 会在那里工作

    【讨论】:

    • 谢谢。但我使用的是 Ubuntu 16 x64 服务器
    【解决方案2】:

    尝试设置完整路径:

    driver.find_element_by_id("fileUploadField").send_keys(os.getcwd()+"/1.m4")
    

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 2020-12-05
      • 2021-02-08
      • 2012-01-29
      • 2017-10-02
      • 2018-05-30
      • 1970-01-01
      • 2012-01-15
      相关资源
      最近更新 更多