我有一个html元素
<input type=file multiple="">
如何使用send_keys上传多个文件?
目前这适用于上传单个文件。我想用它来上传多个文件
我尝试过逗号分隔的路径,但没有运气。
答案 0 :(得分:1)
以下示例适用于我上传多张照片的特定情况,可能会帮助某人...
Photos
是一个字符串数组,['/Users/foo/bar/beautiful_forest-1546653.jpg', '/Users/foo/bar/DTHalloween.jpg']
然后我循环并按send_keys
上传它们。我确保通过检查上传的文件名是否存在于DOM中来上传它们,如果成功的话,它将会存在(特定于我的情况)。 FWIW,我正在测试一个react.js
网络应用程序btw。
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
答案 1 :(得分:0)
首先,将所有文件发送到元素,然后提交。
以下是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
我不确定这是否有效,但只是尝试一下,让我知道结果。
答案 2 :(得分:0)
我试过这个。 uploader.send_keys'path_to_file1'将上传file1,当我尝试上传file2时,
抛出异常,说“uploader”元素无法与
交互我做了一个uploader.is_enabled()
它给了我错误的
答案 3 :(得分:0)
path =“ / home / downloads /” send_keys(路径+“ file1.csv \ n” +路径+“ file2.csv”)
我发现它可以在我的代码中正常工作。尝试一下,让我了解您遇到的错误。
答案 4 :(得分:0)
我没有测试这段代码,但是我认为它应该可以工作
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()
答案 5 :(得分:0)
尝试使用它,因为对我有用:
@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)