Как загрузить произвольное количество файлов с разными типами файлов

#python #selenium #file-upload #xpath

#python #selenium #загрузка файла #xpath

Вопрос:

Я использую Selenium и Python, чтобы попытаться автоматизировать тестирование CVs загружаемых на сервер файлов. Я разобрался со всем, кроме того, как загружать папку с файлами один за другим (около 11 файлов) с разными типами файлов, такими как .odt, .doc, .docx, .pdf, .eml files. Я планировал переименовывать файлы во что-то вроде 001.doc, 002.pdf и так далее и использовать цикл для загрузки их один за другим, повторяя for x in range(1, x) и добавляя x к тому, PATH_TO_FILE = "Path0" x который даст "Path01.file_type" . Итак, основная проблема заключается в следующем: могу ли я каким-то образом загружать папки одну за другой, не переименовывая их? Это CVS, и у них случайные имена. А также, как справиться с проблемой типов файлов, потому что все они разные. Я обнаружил, что единственный способ — это отправить ключи в файл типа ввода для загрузки документа, и для этого требуется абсолютный путь к файлу.

Набор тестов, который я пытаюсь создать, на данный момент очень приблизительный, и мне удалось справиться с поиском элементов, используя только 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()
  

Ответ №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
  

Комментарии:

1. Большое вам спасибо. Это определенно помогло. Теперь у меня есть набор абсолютных путей к правильным файлам с правильными расширениями, и теперь я могу безопасно отправлять их для загрузки с помощью метода send_keys. Я проверю и прочитаю больше на glob.