-1

Below is my HTML code. I have tried by using xpath and still getting an exception of unable to locate element on a create account form. HTML code

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
Maham
  • 91
  • 1
  • 12
  • 4
    You need to switch to the iframe first, then interact with the element. Please also post what have you tried, not only a picture. – lauda Mar 02 '20 at 12:54

1 Answers1

-1

As the the desired element is within an <iframe> so to invoke click() on the element you have to:

  • Induce WebDriverWait for the desired frame_to_be_available_and_switch_to_it().
  • Induce WebDriverWait for the desired element_to_be_clickable().
  • You can use either of the following Locator Strategies:

    • Using CSS_SELECTOR:

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#accountFrame[src='/account/frame/login/create']")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[placeholder='Email'][data-test='create-account-email']"))).click()
      
    • Using XPATH:

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='accountFrame' and @src='/account/frame/login/create']")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@placeholder='Email' and @data-test='create-account-email']"))).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
    

Reference

You can find a couple of relevant discussions in:

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352