Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix this issue element not interactable Selenium Python

I have the following line in my script code, where the XPath I got it from Selenium IDE that works fine:

driver.find_element_by_xpath("(//a[contains(@href, '')])[20]").click()

An automation test stops here with this error:

Traceback (most recent call last):
File "Script.py", line 65, in <module>
    driver.find_element_by_xpath("//a[contains(@href, '')])[20]").click()
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 80, in click
    self._execute(Command.CLICK_ELEMENT)
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: element not interactable
(Session info: chrome=74.0.3729.131)
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Windows NT 6.1.7601 SP1 x86_64)

How to fix this issue?

Thanks for any help.

like image 288
Ger Cas Avatar asked May 17 '19 22:05

Ger Cas


People also ask

How do you fix the element not Interactable exception?

To fix this, we can either apply explicit wait so that the webdriver waits for the expected condition - invisibilityOfElementLocated of the overlaying webelement. Or, we can apply the expected condition - elementToBeClickable on the webelement that we want to interact with.

How do you handle an element not visible exception?

In case of element is not in visibility area of the screen then first we need to scroll the web page using javaScriptExecutor then perform an action. JavascriptExecutor js = (JavascriptExecutor) driver; js. executeScript("arguments[0]. scrollIntoView(true);", element);

How do you handle an element is not clickable at point?

The exception “Element is not clickable at point” might be thrown when the element is not under focus or the action is being performed on the incorrect WebElement. In such cases, you have to switch to the actual element and perform the click action.


4 Answers

Seeing as you just want to scrape the data, I recommend you use this solution:

element = driver.find_element_by_xpath("(//a[contains(@href, '')])[20]")
driver.execute_script("arguments[0].click();", element)

Which clicks the element via Javascript as opposed to a "natural" click that selenium uses (to try to simulate the user experience).

I answered a similar question here that links to another post on it as well.

like image 180
Reedinationer Avatar answered Oct 19 '22 13:10

Reedinationer


I would like to share my experience on that in case someone else had same scenario.
I received same error message "Message: element not interactable".
And after like two hours of troubleshooting it turned out that there was another hidden element identified by XPATH. So, I modified my XPATH to ensure capturing targeted element only.

like image 29
Rola Avatar answered Oct 19 '22 13:10

Rola


Sometimes you may need to copy Full XPATH. That was one work around I found.

like image 2
aiishwin09 Avatar answered Oct 19 '22 12:10

aiishwin09


I was able to fix this issue with using full Xpath instead of x path for anyone coming here in the future I hope this will help. I think the reason for this is the element I wanted to click was wrapped by another element so it was not interactable

like image 1
1000 Years Avatar answered Oct 19 '22 12:10

1000 Years