簡體   English   中英

使用 Python Selenium WebDriver 上傳多個文件

[英]Upload multiple files using Python Selenium WebDriver

我有一個 html 元素

<input type=file multiple="">

如何使用 send_keys 上傳多個文件?

目前這適用於上傳單個文件。 我想用它來上傳多個文件

我試過逗號分隔的路徑,但沒有運氣。

首先,將所有文件發送到元素,然后提交。

以下是 Ruby 代碼,但您可以對 Python 應用相同的邏輯:

uploader = driver.find_element(id: 'file-upload')
uploader.send_keys 'path_to_file1'
uploader.send_keys 'path_to_file2'
uploader.send_keys 'path_to_file3'
.
.
.
uploader.submit

我不確定這是否可行,但請嘗試一下,然后讓我知道結果。

這是一個適用於我上傳多張照片的特定情況的示例,可能會幫助某人...

Photos是一個字符串數組,即['/Users/foo/bar/beautiful_forest-1546653.jpg', '/Users/foo/bar/DTHalloween.jpg']然后我循環並通過send_keys上傳它們。 我通過檢查上傳的文件名是否存在於 DOM 中來確保它們被上傳,如果成功(特定於我的情況)。 FWIW,順便說一句,我正在測試react.js網絡應用程序。

def uploadPhoto(self, photos):
    try:
        drop_zone = self.driver.find_element_by_id('photo-file-input')

        alreadyUploaded = []  # keep track of uploaded files

        for photo in photos:
            photo_name = photo.split('/')[-1].split('.')[0]

            if photo_name.lower() in alreadyUploaded:
              print("Photo already uploaded with name: ( "+ photo_name.lower()+" )")
              continue

            alreadyUploaded.append(photo_name.lower())

            drop_zone.send_keys(photo)

            try:
                WebDriverWait(self.driver, 5).until(
                    EC.presence_of_element_located((By.XPATH, '//img[contains(@data-galleryid, '+ photo_name +')]'))
                )
            except Exception, e:
                raise Exception(e)
        return True
    except Exception, e:
        print 'Failed to upload photo {}'.format(str(e))
        return False

path = “/home/downloads/” send_keys(path + “file1.csv \\n” + path + “file2.csv”)

我發現它在我的代碼中工作。 請嘗試此操作並告訴我您遇到的錯誤的最新信息。

我試過這個。 uploader.send_keys 'path_to_file1' 將上傳文件 1,當我嘗試上傳文件 2 時,

拋出異常表示無法與“上傳者”元素進行交互

我做了一個 uploader.is_enabled()

它給了我假的

我沒有測試這段代碼,但我認為它應該可以工作

image_string = " ".join(images_array)
driver.find_element_by_class_name('PhotoInputFile').send_keys(image_string)
time.sleep(2)
driver.find_element_by_class_name("ButtonUploadPhotos").click()

嘗試使用它,因為對我來說有效:

 @staticmethod
 def set_multiple_file_file():
   element = (INSERT_FILE)
   ROOT_DIR = your.path
   first_path = archive1.something
   second_path = archive2.something
   third_path = archive3.something
   element.send_keys(ROOT_DIR + first_path + ROOT_DIR + second_path + ROOT_DIR + third_path)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM