在Selenium(Chrome)中上传整个文件夹



是否可以在Selenium中模拟将整个文件夹拖放到浏览器的dropzone中?

我知道我们可以通过将input[type="file"]的值属性设置为文件路径来上传单个文件。但当我尝试使用文件夹路径时,浏览器似乎将其视为文件。由于没有扩展名(因为它是一个文件夹(,上传失败。

提前感谢您的帮助。

不幸的是,这是不可能的
您不能通过这种方式上传整个文件夹
您必须迭代该文件夹中的所有文件,然后逐个上传,将其完整的绝对路径发送到该input[type="file"]元素
UPD
您可以通过构造字符串来上传多个文件,该字符串添加由n分隔的文件的所有绝对路径,如下所示:

WebElement filepath = driver.findElement(By.xpath("//input[@type='file']"));
filepath.sendKeys("C:/TextFile1.txt n C:/TextFile2.txt n C:/TextFile3.txt");

DebanjanB 信用

文件夹中的所有文件都可以传输。请参阅下面的代码。

<div id="images_upload">
<div class="col-12 form-group mb-3">
<input type="file" multiple="true" webkitdirectory="true" name="data"
directory="true" id="folderUpload" accept="image/*" class="image-flag">
</div>
</div>

(单击input tag的父div tag而不是input tag。(

selenium = WebDriver()
# upload button click
selenium.find_element(By.ID, 'images_upload').click()
# choose upload folder
target = selenium.find_element(By.ID, "folderUpload")
folder_abs_path = '/datasets/static/test_datasets/images')
target.send_keys(folder_abs_path)                      

最新更新