使用Python Selenium WebDri上载多个文件

2024-09-21 03:20:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个html元素

<input type=file multiple="">

如何使用发送密钥上载多个文件?在

目前这与上传单个文件。我想用这个上传多个文件

我试过用逗号分隔的路径,但没有成功。在


Tags: 文件路径元素inputhtmltype密钥multiple
3条回答

这里有一个例子,在我的具体情况下,上传多张照片,可能会帮助某人。。。在

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_to_file1'将上载文件1,当我尝试上载文件2时

引发异常,说明“uploader”元素无法与

我做了一个上载程序。已启用()

这让我错了

首先,将所有文件发送到元素,然后提交。在

下面是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

我不确定这是否行得通,但试试看,告诉我结果。在

相关问题 更多 >

    热门问题