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

I need to scrap some data from this url: https://www.cnrtl.fr/definition/coupe

The data/results I need to scrap are located in those 3 different tabs: 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.



Solution 1:[1]

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.

#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)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1