Selenium Finding elements by class name in python

Selenium Finding elements by class name in python

You can try to get the list of all elements with class = content by using find_elements_by_class_name:

a = driver.find_elements_by_class_name(content)

Then you can click on the link that you are looking for.

As per the HTML:

<html>
    <body>
    <p class=content>Link1.</p>
    </body>
<html>
<html>
    <body>
    <p class=content>Link2.</p>
    </body>
<html>

Two(2) <p> elements are having the same class content.

So to filter the elements having the same class i.e. content and create a list you can use either of the following Locator Strategies:

  • Using class_name:

    elements = driver.find_elements_by_class_name(content)
    
  • Using css_selector:

     elements = driver.find_elements_by_css_selector(.content)
    
  • Using xpath:

    elements = driver.find_elements_by_xpath(//*[@class=content])
    

Ideally, to click on the element you need to induce WebDriverWait for the visibility_of_all_elements_located() and you can use either of the following Locator Strategies:

  • Using CLASS_NAME:

    elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, content)))
    
  • Using CSS_SELECTOR:

    elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, .content)))
    
  • Using XPATH:

    elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, //*[@class=content])))
    
  • Note : You have to add the following imports :

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

References

You can find a couple of relevant discussions in:

Selenium Finding elements by class name in python

The most simple way is to use find_element_by_class_name(class_name)

Leave a Reply

Your email address will not be published. Required fields are marked *