Home > OS >  How to click on an element by title with Selenium Python
How to click on an element by title with Selenium Python

Time:03-15

I'm trying to check a checkbox with selenium and the only available info is the title. Is a dynamic element, so I need to select by the title.

I tried all the methods without success (contains @title, etc).

Can someone please help? I'm beginning to code.

The xpath is:

/html/body/div[7]/div[2]/div/div[2]/div/div[2]/div/div/div[1]/form/div/span[1]/input

The CSS Selector is:

#selectCommon > span:nth-child(1) > input:nth-child(1)

The HTML looks like:

<input type="checkbox" title="AM - AMERICAS">

CodePudding user response:

To click() on the element with title as AM - AMERICAS you can use either of the following locator strategies:

  • Using css_selector:

    driver.find_element(By.CSS_SELECTOR, "input[title^='AM'][title$='AMERICAS']").click()
    
  • Using xpath:

    driver.find_element(By.XPATH, "//input[starts-with(@title, 'AM') and contains(@title, 'AMERICAS')]").click()
    

Ideally to click() on the clickable element you need to induce WebDriverWait for the element_to_be_clickable() and you can use either of the following locator strategies:

  • Using CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[title^='AM'][title$='AMERICAS']"))).click()
    
  • Using XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[starts-with(@title, 'AM') and contains(@title, 'AMERICAS')]"))).click()
    
  • 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
    
  • Related