Home > Net >  can't click() an onclick element with selenium (tried text link, partial text link, xpath, css
can't click() an onclick element with selenium (tried text link, partial text link, xpath, css

Time:05-14

I need to scrap some data from this url: enter image description here

I'm unable to click on the onclick element which should let me switch from a tab to another.

Here the html code for one of the 3 onclick elements: enter image description here

The 3 onclick elements differ from each other by the number at the end:

#COUPE1:
return sendRequest(5,'/definition/coupe//0');

#COUPE2:
return sendRequest(5,'/definition/coupe//1');

#COUPER:
return sendRequest(5,'/definition/coupe//2');

I tried to find them by link text, partial link text, xpath and css selector.

I've followed this thread: Python Selenium: How can click on "onclick" elements?

Also try the contains and text() method.

Without success.

CodePudding user response:

There are a few ways you could do this. I chose the method I did because the page reloads causing the elements to become stale. This is an issue you will find with mr_mooo_cow's answer.

#Get the URL
driver.get("https://www.cnrtl.fr/definition/coupe")
#Find the parent element of the tabs
tabs = driver.find_element(By.ID, 'vtoolbar')
#Get all the list items under the parent (tabs)
lis = tabs.find_elements(By.TAG_NAME, 'li')
#loop over them (skipping the first tab, because that's already loaded)
for i in range(1, len(lis)):
    #Execute the same JS as the page would on click, using the index of the loop
    driver.execute_script(f"sendRequest(5,'/definition/coupe//{i}');")
    #Sleep to visualise the clicking
    time.sleep(3)
  • Related