[英]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.