【问题标题】:Python - Retrieve file for a browser page's <input type="file"> through a filepath (or any alternative)Python - 通过文件路径(或任何替代方法)检索浏览器页面的 <input type="file"> 文件
【发布时间】:2014-06-20 21:54:39
【问题描述】:

我正在尝试通过终端中的 Python 自动将文件上传到浏览器页面。浏览器页面的代码有

<input type="file" id="upload_input"/> 

这会打开一个操作系统级别的对话框,我遇到了困难。有没有办法通过将其指向文件路径或使用 Python 的任何替代方法来覆盖打开的操作系统级别对话框?我是压倒一切的,因为我一直在使用 Selenium 与浏览器页面进行交互,而我的代码卡在这里,我必须与操作系统级别的对话框进行交互。

注意:该页面不是我的页面,因此我无法进入并更改 html 代码。

谢谢!

【问题讨论】:

    标签: python selenium file-upload browser upload


    【解决方案1】:

    如果测试文件与测试脚本位于同一文件夹中,您可以使用以下内容:

    driver.find_element_by_id('upload_input').send_keys(os.getcwd()+"/testupload.xlsx")
    driver.find_element_by_css_selector('input[type="submit"]').click()
    

    在这种情况下,os.getcwd() 定位测试脚本所在的“当前工作目录”。我使用字符串连接添加文件名,您可以使用相同的方法添加例如目录。与显式文件路径(例如 C:\temp\myfile.txt)不同,只要机器之间的相对文件结构相同,这种方式就可以不管您的操作系统如何工作。

    【讨论】:

    • 有点效果!我遇到了一个与此不同的问题,但这很好。谢谢!
    【解决方案2】:

    试试这个:

    driver.find_element_by_id("upload_input").send_keys(r"C:\path_to_file.txt")
    driver.find_element_by_id("submit_button").click()
    

    【讨论】:

    • 有点效果!我遇到了一个与此不同的问题,但这很好。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-11-27
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多