繁体   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