Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python selenium can't clear input field

I try to select my input with selenium but when I use this it doesn't work:

driver = self.driver
password = driver.find_element_by_xpath("//input[@name='password']")
password.clear()
password.send_keys(password)
password.send_keys(Keys.RETURN)

# the sentence below doesn't work
password.send_keys(Keys.COMMAND, 'a')
password.send_keys(Keys.DELETE)

I am using Mac so Keys.CONTROL doesn't work, can anyone help me how to select the input or how to clear it?

Thanks

like image 636
surftijmen Avatar asked Nov 14 '25 21:11

surftijmen


2 Answers

You have to induce WebDriverWait for the element_to_be_clickable() and you can use either of the following Locator Strategies:

  • Using CSS_SELECTOR:

    password = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='password']")))
    password.click()        
    password.clear()
    password.send_keys("Tijmen")
    
  • Using XPATH:

    password = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='password']")))
    password.click()
    password.clear()
    password.send_keys("Tijmen")
    
  • 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:

  • How to clear text field before sending keys selenium c#
  • clear() does not clear the textbox with selenium and python and firefox
  • InvalidElementStateException when attempting to clear text through Selenium
like image 141
undetected Selenium Avatar answered Nov 17 '25 11:11

undetected Selenium


Mac cannot use COMMAND you need Keys.BACKSPACE Try:

driver = self.driver
password = driver.find_element_by_xpath("//input[@name='password']")
password.clear()
password.send_keys(password)
password.send_keys(Keys.RETURN)
#password = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='password']")))
#or
#time.sleep(1)
for i in range(len(password)):
    password.send_keys(Keys.BACKSPACE)
like image 45
Jortega Avatar answered Nov 17 '25 11:11

Jortega



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!