Alexander K.
Alexander K.

Reputation: 111

How to upload multiple files using SendKeys Selenium

I have an element with following HTML:

<input type="file" name="upload" value="[]" id="upload1" class="upload">

To the best of my understanding its value is an array/list and it's supposed to store uploaded files paths (multiple files are allowed).

I use following code to upload ONE file:

.FindElementById("upload1").SendKeys ("C:\file1.txt") 

and it works just fine. However, i need to upload multiple files but I do not get how to populate the array with multiple filepaths using SendKeys.

I use vba to automated data entry from within excel.

Upvotes: 3

Views: 5880

Answers (2)

DLWLRMA
DLWLRMA

Reputation: 1

@undetected-selenium answer works for me but i used join() function instead of string concatenation to solve the File not found exception.

file_paths = [] #array of file paths
combined_paths = "\n".join(file_paths)
driver.FindElementById("upload1").send_keys(combined_paths)

Upvotes: 0

undetected Selenium
undetected Selenium

Reputation: 193088

To upload multiple files you can construct the character string adding all the absolute path of the files seperated by \n as follows:

.FindElementById("upload1").SendKeys("C:/TextFile1.txt \n C:/TextFile2.txt \n C:/TextFile3.txt");

References

You can find a couple of relevant detailed discussions in:

Upvotes: 6

Related Questions