Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clearing a html input box using selenium

I am trying to clear an input on indeed but the clear() function is not working. Any ideas on how to clear the input box?

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.indeed.com")
#this is not clearning the input
elem2 = driver.find_element_by_id("text-input-where").clear()
like image 735
cLax Avatar asked Nov 01 '25 04:11

cLax


2 Answers

First thing i'd like to point out is you are using

elem2 = driver.find_element_by_id("text-input-where").clear()

clear() – clear the value of any text type element. It doesn’t allow any parameter and its return type is void. So elem2 will be null.

Second, we can use a combination of methods depending upon the application under test.

Sometimes, driver.find_element_by_id("text-input-where").clear() doesn't work, if element is not clicked first. So we can do,

driver.find_element_by_id("text-input-where").click();
driver.find_element_by_id("text-input-where").clear();
driver.find_element_by_id("text-input-where").sendKeys(textContent);

OR we can also use Actions class and Webdriver waits.

elem2 = WebDriverWait(browser, 60).until(EC.visibility_of_element_located((By.ID, 'text-input-where')))
webdriver.ActionChains(driver).move_to_element(elem2).click(elem2).perform()
elem2.clear();

OR as mentioned in this answer, we can simulate CTRL + A and DEL keys.

driver.find_element_by_id("text-input-where").click();
driver.find_element_by_id("text-input-where").send_keys(Keys.CONTROL + "a");
driver.find_element_by_id("text-input-where").send_keys(Keys.DELETE);
like image 145
Naveenchandar Avatar answered Nov 03 '25 18:11

Naveenchandar


You are not using waits thats also an issue.

So use wait first and as @Sers stated use JavaScript executor

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

    driver = webdriver.Chrome()
    driver.get("https://www.indeed.com")

    WebDriverWait(browser, 60).until(EC.visibility_of_element_located((By.ID, 'text-input-where')))

    elem2 = driver.find_element_by_id("text-input-where")

    driver.execute_script('arguments[0].value = "";', elem2)

Below Java code working for me:

WebDriver driver = new ChromeDriver();
driver.get("https://www.indeed.com");
WebDriverWait waiter = new WebDriverWait(driver, 60);
waiter.until(ExpectedConditions.visibilityOfElementLocated(By.id("text-input-where")));
WebElement element = driver.findElement(By.id("text-input-where"));

((JavascriptExecutor) driver).executeScript("arguments[0].value ='';", element);
like image 25
Shubham Jain Avatar answered Nov 03 '25 18:11

Shubham Jain



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!