【问题标题】:How to upload arbitrary number of files with different file types如何上传任意数量的不同文件类型的文件
【发布时间】:2014-07-07 10:19:52
【问题描述】:

我正在使用 Selenium 和 Python 来尝试自动测试上传到服务器的 CVs。除了如何一个一个地上传具有不同文件类型的文件文件夹(大约 11 个文件),例如.odt, .doc, .docx, .pdf, .eml 文件之外,我想出了所有东西。我计划将文件重命名为001.doc, 002.pdf 之类的名称,并使用循环通过在for x in range(1, x) 中迭代并将x 附加到PATH_TO_FILE = "Path\00" + x 来逐个上传它们,这将给出"Path\001.file_type"。所以主要问题是:我可以以某种方式一个一个地上传文件夹而不重命名它们吗?那些是简历,他们有随机的名字。而且,如何处理文件类型的问题,因为它们都是不同的。我发现唯一的方法是将send_keys发送到输入类型文件以上传文档,并且需要文件的绝对路径。

我正在尝试构建的测试套件目前非常粗糙,我设法仅使用 XPATH 来查找元素,但上传的问题让我很困惑。

# Find browse button
    browse_button = self.retrieve_browse_button
    # Type in path to CVs
    PATH_TO_CVS = "C:\\11MainTestCVS\\00"
    for x in range(1, 12):
      browse_button.send_keys(PATH_TO_CVS + x + file_type) # How to determine file type?
    # Click load
    xpath = "//a[contains(@href, 'javascript:submitCV()')]"
    self.webdriver.find_element_by_xpath(xpath).click()

【问题讨论】:

    标签: python selenium file-upload xpath


    【解决方案1】:

    据我所知,您正在搜索 glob:

    from os import path
    from glob import glob
    EXTENSIONS = ['*.pdf', '*.eml', '*.doc']
    DOC_PATH = '/PATH/TO/YOUR/FILES'
    
    files = []    
    for ext in EXTENSIONS:
        files.extend(glob(path.join(DOC_PATH, ext)))
    
    # files will now contain all files in DOCPATH with EXTENSIONS
    

    【讨论】:

    • 非常感谢。它肯定有帮助。我现在有一组绝对路径来更正具有正确扩展名的文件,现在可以通过 send_keys 方法安全地发送它们进行上传。我会查看并阅读更多关于 glob 的内容。
    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2018-11-11
    • 2018-09-22
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    相关资源
    最近更新 更多