0

How to click the second element if the first element is not clickable using Python Selenium

Code trials:

if self.driver.find_element(By.CSS_SELECTOR, ".estimator-container:nth-child(3) .btn").is_not_clicked():
    self.driver.find_element(By.LINK_TEXT, "Dont have the Plate?").click();
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
Enea Hysa
  • 1
  • 2

1 Answers1

0

To click on any clickable element you need to induce WebDriverWait for the element_to_be_clickable() wrapping up the the code block within a try-except{} block and you can usethe following Locator Strategies:

try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".estimator-container:nth-child(3) .btn"))).click()
    print("First element was clicked")
except TimeoutException:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Dont have the Plate?"))).click()
    print("Second element was clicked")

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
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352