Search code examples
python-3.xseleniumxpathonclickclick

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

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