Search code examples
python-3.xseleniumxpathcss-selectorswebdriverwait

How to check a checkbox in Chrome using Selenium with python


I'm trying to check a checkbox via selenium in Chrome using python3. This is the HTML code:

 <header class="list-header">
    <aside class="list-header-bulk-selection">
       <input type="checkbox" class="sc-cSHVUG iAwiCZ">
           ::after   

I'm trying to check the box by:

check_mark = driver.find_element_by_xpath("//input[@class='sc-cSHVUG iAwiCZ']")
check_mark.click()

I am able to find the location, but unfortunately I get the following error message:

ElementNotInteractableException: Message: element not interactable
  (Session info: chrome=75.0.3770.142)

I think I have to access the ::after line, but I have no clue how I should do this.


Solution

  • Try following options to click on checkbox.

    Option1:

    location_once_scrolled_into_view

    check_mark = driver.find_element_by_xpath("//input[@class='sc-cSHVUG iAwiCZ']")
    check_mark.location_once_scrolled_into_view
    check_mark.click()
    

    Option2:

    WebDriverWait and element_to_be_clickable

    check_mark =WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//input[@class='sc-cSHVUG iAwiCZ']")))
    check_mark.click()
    

    Option3:

    Java Scripts Executor

    check_mark =WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//input[@class='sc-cSHVUG iAwiCZ']")))
    driver.execute_script("arguments[0].click();", check_mark)
    

    You need to import followings to execute above code.

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