Because Selenium cannot interact with the file upload dialog, it provides a way
to upload files without opening the dialog. If the element is an input element with type file,
you can use the send keys method to send the full path to the file that will be uploaded.
     WebElement   fileInput   =   driver . findElement ( By . cssSelector ( "input[type=file]" )); 
      fileInput . sendKeys ( uploadFile . getAbsolutePath ()); 
      driver . findElement ( By . id ( "file-submit" )). click (); examples/java/src/test/java/dev/selenium/elements/FileUploadTest.java 
Copy
 
Close 
package   dev.selenium.elements ; 
 
 import   dev.selenium.BaseChromeTest ; 
 import   java.io.File ; 
 import   org.junit.jupiter.api.Assertions ; 
 import   org.junit.jupiter.api.Test ; 
 import   org.openqa.selenium.By ; 
 import   org.openqa.selenium.WebElement ; 
 
 public   class  FileUploadTest   extends   BaseChromeTest   { 
 
    @Test 
    public   void   fileUploadTest ()   { 
      driver . get ( "https://the-internet.herokuapp.com/upload" ); 
      File   uploadFile   =   new   File ( "src/test/resources/selenium-snapshot.png" ); 
 
      WebElement   fileInput   =   driver . findElement ( By . cssSelector ( "input[type=file]" )); 
      fileInput . sendKeys ( uploadFile . getAbsolutePath ()); 
      driver . findElement ( By . id ( "file-submit" )). click (); 
 
      WebElement   fileName   =   driver . findElement ( By . id ( "uploaded-files" )); 
      Assertions . assertEquals ( "selenium-snapshot.png" ,   fileName . getText ()); 
    } 
 } 
     file_input  =  driver . find_element ( By . CSS_SELECTOR ,  "input[type='file']" ) 
     file_input . send_keys ( upload_file ) 
     driver . find_element ( By . ID ,  "file-submit" ) . click ()  examples/python/tests/elements/test_file_upload.py 
Copy
 
Close 
import  os 
 from  selenium  import  webdriver 
from  selenium.webdriver.common.by  import  By 
 
 def  test_uploads ( driver ): 
    driver . get ( "https://the-internet.herokuapp.com/upload" ) 
     upload_file  =  os . path . abspath ( 
         os . path . join ( os . path . dirname ( __file__ ),  ".." ,  "selenium-snapshot.png" )) 
 
     file_input  =  driver . find_element ( By . CSS_SELECTOR ,  "input[type='file']" ) 
     file_input . send_keys ( upload_file ) 
     driver . find_element ( By . ID ,  "file-submit" ) . click () 
 
     file_name_element  =  driver . find_element ( By . ID ,  "uploaded-files" ) 
     file_name  =  file_name_element . text 
 
     assert  file_name  ==  "selenium-snapshot.png" 
             IWebElement  fileInput  =  driver . FindElement ( By . CssSelector ( "input[type=file]" )); 
             fileInput . SendKeys ( uploadFile ); 
             driver . FindElement ( By . Id ( "file-submit" )). Click ();  examples/dotnet/SeleniumDocs/Elements/FileUploadTest.cs 
Copy
 
Close 
using  System ; 
using  System.IO ; 
using  Microsoft.VisualStudio.TestTools.UnitTesting ; 
using  OpenQA.Selenium ; 
 namespace  SeleniumDocs.Elements 
{ 
    [TestClass] 
    public  class  FileUploadTest  :  BaseChromeTest 
     { 
         [TestMethod] 
        public  void  Uploads () 
         { 
             driver . Url  =  "https://the-internet.herokuapp.com/upload" ; 
 
             string  baseDirectory  =  AppContext . BaseDirectory ; 
             string  relativePath  =  "../../../TestSupport/selenium-snapshot.png" ; 
 
             string  uploadFile  =  Path . GetFullPath ( Path . Combine ( baseDirectory ,  relativePath )); 
 
             IWebElement  fileInput  =  driver . FindElement ( By . CssSelector ( "input[type=file]" )); 
             fileInput . SendKeys ( uploadFile ); 
             driver . FindElement ( By . Id ( "file-submit" )). Click (); 
 
             IWebElement  fileName  =  driver . FindElement ( By . Id ( "uploaded-files" )); 
             Assert . AreEqual ( "selenium-snapshot.png" ,  fileName . Text ); 
         } 
     } 
 }     file_input  =  driver . find_element ( css :  'input[type=file]' ) 
     file_input . send_keys ( upload_file ) 
     driver . find_element ( id :  'file-submit' ) . click  examples/ruby/spec/elements/file_upload_spec.rb 
Copy
 
Close 
# frozen_string_literal: true 
 require  'spec_helper' 
 RSpec . describe  'File Upload'  do 
  let ( :driver )  {  start_session  } 
 
   it  'uploads'  do 
     driver . get ( 'https://the-internet.herokuapp.com/upload' ) 
     upload_file  =  File . expand_path ( '../spec_support/selenium-snapshot.png' ,  __dir__ ) 
 
     file_input  =  driver . find_element ( css :  'input[type=file]' ) 
     file_input . send_keys ( upload_file ) 
     driver . find_element ( id :  'file-submit' ) . click 
 
     file_name  =  driver . find_element ( id :  'uploaded-files' ) 
     expect ( file_name . text ) . to  eq  'selenium-snapshot.png' 
   end 
 end 
    await  driver . get ( 'https://the-internet.herokuapp.com/upload' ); 
     // Upload snapshot
  /examples/javascript/test/elements/fileUpload.spec.js 
Copy
 
Close 
 const  { Browser ,  By ,  until ,  Builder }  =  require ( "selenium-webdriver" ); 
const  path  =  require ( "path" ); 
const  assert  =  require ( 'node:assert' ); 
 
 describe ( 'File Upload Test' ,  function ()  { 
  let  driver ; 
 
   before ( async  function ()  { 
     driver  =  new  Builder () 
       . forBrowser ( Browser . CHROME ) 
       . build (); 
   }); 
 
   after ( async ()  =>  await  driver . quit ()); 
 
   it ( 'Should be able to upload a file successfully' ,  async  function ()  { 
     const  image  =  path . resolve ( './test/resources/selenium-snapshot.png' ) 
 
     await  driver . manage (). setTimeouts ({ implicit :  5000 }); 
 
     // Navigate to URL
  await  driver . get ( 'https://the-internet.herokuapp.com/upload' ); 
    // Upload snapshot
  await  driver . findElement ( By . id ( "file-upload" )). sendKeys ( image ); 
    await  driver . findElement ( By . id ( "file-submit" )). submit (); 
 
     const  revealed  =  await  driver . findElement ( By . id ( 'uploaded-files' )) 
     await  driver . wait ( until . elementIsVisible ( revealed ),  2000 ); 
     const  data  =  await  driver . findElement ( By . css ( 'h3' )); 
 
     assert . equal ( await  data . getText (),  `File Uploaded!` ); 
   }); 
 }); Move Code 
```java
import org.openqa.selenium.By
import org.openqa.selenium.chrome.ChromeDriver
fun main() {
val driver = ChromeDriver()
driver.get("https://the-internet.herokuapp.com/upload")
driver.findElement(By.id("file-upload")).sendKeys("selenium-snapshot.jpg")
driver.findElement(By.id("file-submit")).submit()
if(driver.pageSource.contains("File Uploaded!")) {
println("file uploaded")
}
else{
println("file not uploaded")
}
}
```