user2782827
user2782827

Reputation: 121

selenium webdriver upload file

I am new to selenium, I have a script that uploads a file to a server.

In the ide version sort of speak it uploads the file, but when I export test case as python 2 /unittest / webdriver it doesn't upload it..

It doesn't give me any errors, just doesn't upload it...

The python script is:

driver.find_element_by_id("start-upload-button-single").click()
driver.find_element_by_css_selector("input[type=\"file\"]").clear()
driver.find_element_by_css_selector("input[type=\"file\"]").send_keys("C:\\\\Documents and Settings\\\\pcname\\\\Desktop\\\\ffdlt\\\\test.jpeg")

I searched for solutions but I haven't found any except integrating it with AutoIt or AutoHotKey...

The first line opens the File Upload Box of Firefox.

Upvotes: 11

Views: 20561

Answers (5)

Albertix
Albertix

Reputation: 11

Using Pyautowin

from pywinauto import Desktop
driver.find_element_by_id("start-upload-button-single").click()
app = Desktop()['Open']   # About `Open`, checkout upload Dialog title
app.wait('visible')
app.Edit.type_keys(R"C:\Documents and Settings\pcname\Desktop\ffdlt\test.jpeg", with_spaces=True)
app['Open'].click()  # About `Open`, checkout upload Button name

Upvotes: 0

Ashish Disawal
Ashish Disawal

Reputation: 45

This works for me:

# Upload file
elem = driver.find_element_by_name("File")
elem.send_keys(r"D:\test\testfile04.txt")
elem = driver.find_element_by_partial_link_text("Upload File")
elem.click()

Upvotes: 1

user2782827
user2782827

Reputation: 121

If I run the following lines from the IDE it works just fine, it uploads the file.

Command | Target                               | Value
_____________________________________________________________
open    | /upload                              |
click   | id=start-upload-button-single        |
type    | css=input[type="file"]               | C:\\Documents and Settings\\cristian\\Desktop\\ffdl\\MyWork.avi

But when I export it for Python webdriver it just doesn't upload it, I have tried everything.

The last resort is to make it work with AutoHotKey, but I want it to work.

What I have done is tested the solutions that I have found with/on other sites to see if the problem is only on the site that i am trying to make the upload(youtube), the solutions work(EX: http://dev.sencha.com/deploy/ext-4.0.0/examples/form/file-upload.html) they are valid, you can upload a file to most servers, it just doesn't work on it.

Thank you for your help.

Upvotes: 1

vysakh
vysakh

Reputation: 266

Did you tried this single piece of code:

driver.find_element_by_css_selector("input[type=\"file\"]").send_keys("C:\\Documents and Settings\\pcname\\Desktop\\ffdlt\\test.jpeg")

Upvotes: 2

falsetru
falsetru

Reputation: 368914

Your code work perfectly for me (I test it with Firefox, Chrome driver)

One thing I supect is excessive backslash(\) escape.

Try following:

driver.find_element_by_id("start-upload-button-single").click()
driver.find_element_by_css_selector('input[type="file"]').clear()
driver.find_element_by_css_selector('input[type="file"]').send_keys("C:\\Documents and Settings\\pcname\\Desktop\\ffdlt\\test.jpeg")

or

driver.find_element_by_id("start-upload-button-single").click()
driver.find_element_by_css_selector('input[type="file"]').clear()
driver.find_element_by_css_selector('input[type="file"]').send_keys(r"C:\Documents and Settings\pcname\Desktop\ffdlt\test.jpeg")

Upvotes: 8

Related Questions