#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.