Selenium Webdriver - click on hidden elements

I am trying to automate upload file functionality in Google Drive.

The element used to pass parameters is hidden with height - 0px.

None of the user actions would make this element visible. So I need a work around to click on the element while it is not visible.

<input type="file" style="height: 0px; visibility: hidden; position: absolute; width: 340px; font-size: inherit;" multiple=""/>

The xpath for the above element is -

//*[@class='goog-menu goog-menu-vertical uploadmenu density-tiny']/input

I am using


Exception -

  • Element is not currently visible and so may not be interacted with.

I have tried using JavascriptExecutor. But unable to find the exact syntax.


Try this:

WebElement elem = yourWebDriverInstance.findElement(By.xpath("//*[@class='goog-menu goog-menu-vertical uploadmenu density-tiny']/input"));
String js = "arguments[0].style.height='auto'; arguments[0].style.visibility='visible';";

((JavascriptExecutor) yourWebDriverInstance).executeScript(js, elem);

The above bunch would change the visibility of your file input control. You can then proceed with the usual steps for file upload like:

elem.sendKeys("<LOCAL FILE PATH>"); 

Be aware, by changing the visibility of an input field you are meddling with the application under test. Injecting scripts to alter behavior is intrusive and not recommended in tests.

Simple solution:

WebElement tmpElement = driver.finElement(ElementLocator);
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", tmpElement);

Try this sample code:

JavascriptExecutor executor= (JavascriptExecutor)driver;
Select select = new Select(driver.findElement("ID")));

By using java script executor and make the element visible then click on the element through ID. Hope it hepls..

You can give the following a try :

((JavascriptExecutor)driver).executeScript("$('.goog-menu.uploadmenu > input').click();");

Try this:

WebElement elem = yourWebDriverInstance.findElement(
   By.cssSelector(".uploadmenu > input"));
String js = 
  "arguments[0].style.height='auto'; arguments[0].style.visibility='visible';";
((JavascriptExecutor) yourWebDriverInstance).executeScript(js, elem);

Here I have replaced XPath by CSS Selector. Let me know Is the above scripting is working or not.

Need Your Help

Can not find User.Identity.GetUserId() Method

Using Visual Studio 2013 Express MVC application with references to

Pushing read-only GUI properties back into ViewModel

wpf data-binding mvvm readonly

I want to write a ViewModel that always knows the current state of some read-only dependency properties from the View.