26

I have a grid which displays some records. When I click on a record and inspect that element it is shown that it is hidden but it is visible in the grid.

My HTML is:

<a href="http://192.168.1.6/eprint_prod_3.8/settings/othercost_add.aspx?type=edit&id=805" title="Plastic Spiral Bind"
<div style="float: left; width: 99%; overflow: hidden; height: 15px; overflow: hidden"> Plastic Spiral Bind </div>
</a>

The above code is hidden while inspecting but it is visible in grid.

Selenium code:

driver.findElement(By.partialLinkText("Plastic Spiral Bind")).click();
Ripon Al Wasim
37.9k42 gold badges159 silver badges179 bronze badges
asked Mar 1, 2014 at 4:50
2
  • 3
    Seems to be an FAQ item : code.google.com/p/selenium/wiki/…? You would require javascript. Commented Mar 1, 2014 at 5:00
  • @Santhosh.S - What is the issue you are facing ? Is the .click() not working? Commented Mar 1, 2014 at 9:06

7 Answers 7

37

First store that element in object, let's say element and then write following code to click on that hidden element:

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", element);
answered Mar 2, 2014 at 8:37

3 Comments

I don't understand why Selenium believes that my Save button isn't visible, but you saved (pun intended) me with this snippet.
Thanks! I can able to click the element even if it is not visible on screen. In my case it's a slide type. The button is not visible but present in DOM. (isElementDisplayed() always returns true in this scenario).
is there a way to simulate Double Click ? I tried click twice but it's not working
14

You have two approaches. Selenium has been specifically written to NOT allow interaction with hidden elements. The rational is that if a person cannot perform that action, then neither should Selenium. Therefore, to perform the click via Selenium, you must perform the action a user would do to make that button visible (e.g mouse over event, click another element, etc) then perform the click once visible.

However, Selenium does allow you to execute Javascript within the context of an element, so you could write Javascript to perform the click event even if it is hidden.

My preference is to always try and perform the actions to make the button visible

answered Mar 1, 2014 at 21:48

2 Comments

overflow: hidden doesn't neccesrely mean that it is hidden.
Using pseudo elements to create custom styled radios and checkboxes is another reason you need to click a hidden element.
5

Here is the script in Python.

You cannot click on elements in selenium that are hidden. However, you can execute JavaScript to click on the hidden element for you.

element = driver.find_element_by_id(buttonID)
driver.execute_script("$(arguments[0]).click();", element)
answered Dec 4, 2019 at 0:06

Comments

0
overflow:hidden 

does not always mean that the element is hidden or non existent in the DOM, it means that the overflowing chars that do not fit in the element are being trimmed. Basically it means that do not show scrollbar even if it should be showed, so in your case the link with text

Plastic Spiral Bind

could possibly be shown as "Plastic Spir..." or similar. So it is possible, that this linkText indeed is non existent.

So you can probably try:

driver.findElement(By.partialLinkText("Plastic ")).click();

or xpath:

//a[contains(@title, \"Plastic Spiral Bind\")]
answered Mar 2, 2014 at 23:31

Comments

0

I did it with jQuery:

page.execute_script %Q{ $('#some_id').prop('checked', true) }
answered Jun 8, 2018 at 21:11

Comments

-1

If the <div> has id or name then you can use find_element_by_id or find_element_by_name

You can also try with class name, css and xpath

find_element_by_class_name
find_element_by_css_selector
find_element_by_xpath
answered Mar 1, 2014 at 5:06

1 Comment

wrong attempt....the answer being proposed works only for visible elements on the page and not the hidden.
-5

Use an XPath of the link by using Selenium IDE to click the element:

driver.findelement(By.xpath("//a[contains(@title, \"Plastic Spiral Bind\")]")).click();
honk
9,82311 gold badges83 silver badges90 bronze badges
answered Jul 4, 2015 at 12:13

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.