How to get the value of the edit box in Selenium?

In Selenium WebDriver, retrieving values from edit boxes (input fields) requires specific methods since getText() often returns empty strings for input elements. Here are the most effective approaches to extract values from edit boxes.

Why getText() May Not Work

The getText() method retrieves visible text content, but input fields store their values in the "value" attribute rather than as text content. This is why getText() often returns empty strings for input elements.

Method 1: Using getAttribute("value")

The most reliable approach is using the getAttribute() method to retrieve the "value" attribute:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;

public class GetValueScripting {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        String url = "https://www.tutorialspoint.com/index.htm";
        driver.get(url);
        driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
        
        // Get value using getAttribute
        WebElement inputBox = driver.findElement(By.className("gsc-input"));
        String value = inputBox.getAttribute("value");
        System.out.println("Extracted value is: " + value);
        
        driver.close();
    }
}

Method 2: Using JavaScriptExecutor

For complex scenarios or when dealing with dynamically generated content, JavaScriptExecutor provides direct access to DOM properties:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.JavascriptExecutor;
import java.util.concurrent.TimeUnit;

public class ExtractValueScripting {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        String url = "https://www.tutorialspoint.com/index.htm";
        driver.get(url);
        driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
        
        // Create JavascriptExecutor object
        JavascriptExecutor js = (JavascriptExecutor) driver;
        
        // Extract value using JavaScript
        String value = js.executeScript("return document.getElementById('gsc-i-id1').value").toString();
        System.out.println("Extracted value is: " + value);
        
        driver.close();
    }
}

Method 3: Using getText() for Special Cases

While getText() typically doesn't work for input fields, it can be useful for textarea elements or contenteditable divs:

// For textarea or contenteditable elements
WebElement textArea = driver.findElement(By.tagName("textarea"));
String textContent = textArea.getText();
System.out.println("Text content: " + textContent);

Comparison of Methods

Method Best For Reliability Performance
getAttribute("value") Standard input fields High Fast
JavaScriptExecutor Complex scenarios, dynamic content High Moderate
getText() Textarea, contenteditable elements Low for inputs Fast

Key Points

  • Always use getAttribute("value") for standard input fields

  • JavaScriptExecutor is useful when working with complex DOM structures

  • getText() works for textarea and contenteditable elements, not regular inputs

  • Ensure proper wait times before attempting to retrieve values

Conclusion

The getAttribute("value") method is the most reliable approach for extracting values from edit boxes in Selenium. Use JavaScriptExecutor for advanced scenarios requiring direct DOM access.

Updated on: 2026-03-15T23:18:59+05:30

653 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements