Bird
Raised Fist0
Selenium Javatesting~8 mins

Typing text (sendKeys) in Selenium Java - Framework Patterns

Choose your learning style10 modes available
Framework Mode - Typing text (sendKeys)
Folder Structure
  selenium-java-project/
  ├── src/
  │   ├── main/
  │   │   └── java/
  │   │       └── pages/
  │   │           └── LoginPage.java
  │   └── test/
  │       └── java/
  │           ├── tests/
  │           │   └── LoginTest.java
  │           └── utils/
  │               └── WebDriverFactory.java
  ├── testng.xml
  ├── pom.xml
  └── README.md
  
Test Framework Layers
  • Driver Layer: Manages WebDriver setup and teardown (e.g., WebDriverFactory.java).
  • Page Objects: Classes representing web pages with methods to interact, including typing text using sendKeys().
  • Tests: Test classes that call page object methods to perform actions and assertions.
  • Utilities: Helper classes for waits, logging, and common functions.
  • Configuration: Files like testng.xml and pom.xml to manage test execution and dependencies.
Configuration Patterns
  • Environment Setup: Use testng.xml to define test suites and parameters like browser type.
  • Browser Selection: Pass browser name as a parameter to WebDriverFactory to create the correct driver.
  • Credentials: Store sensitive data in environment variables or encrypted files, not hardcoded.
  • Timeouts and Waits: Configure implicit and explicit waits centrally in WebDriverFactory or utilities.
Test Reporting and CI/CD Integration
  • Use TestNG built-in reports for pass/fail results and test details.
  • Integrate with CI/CD tools like Jenkins or GitHub Actions to run tests automatically on code changes.
  • Generate HTML or XML reports for easy review by the team.
  • Use screenshots on failure to help debug typing or interaction issues.
Best Practices for Typing Text (sendKeys)
  • Use Page Object Model to keep typing actions inside page classes, not tests.
  • Use explicit waits to ensure the input field is visible and enabled before typing.
  • Clear input fields before typing to avoid leftover text.
  • Use meaningful method names like enterUsername(String username) for clarity.
  • Avoid hardcoding text in tests; use test data or parameters for flexibility.
Self Check

Where would you add a new method enterPassword(String password) that types text into the password field?

Key Result
Use Page Object Model with explicit waits and clear input before sendKeys for reliable typing actions.

Practice

(1/5)
1. What does the sendKeys() method do in Selenium WebDriver?
easy
A. It takes a screenshot of the current page.
B. It types text into an input field on a web page.
C. It navigates to a new URL.
D. It clicks a button on the web page.

Solution

  1. Step 1: Understand the purpose of sendKeys()

    The sendKeys() method simulates typing text into input fields.
  2. Step 2: Compare with other actions

    Clicking buttons, navigating URLs, and taking screenshots are done by other methods, not sendKeys().
  3. Final Answer:

    It types text into an input field on a web page. -> Option B
  4. Quick Check:

    sendKeys() = types text [OK]
Hint: sendKeys() = typing text into fields [OK]
Common Mistakes:
  • Confusing sendKeys() with click()
  • Thinking sendKeys() navigates pages
  • Assuming sendKeys() takes screenshots
2. Which of the following is the correct syntax to type "hello" into a text input using Selenium in Java?
easy
A. driver.findElement(By.id("inputField")).sendKeys("hello");
B. driver.sendKeys(By.id("inputField"), "hello");
C. driver.findElement(By.id("inputField")).type("hello");
D. driver.findElement(By.id("inputField")).click("hello");

Solution

  1. Step 1: Locate element and use sendKeys()

    The correct way is to find the element first, then call sendKeys() on it with the text.
  2. Step 2: Check syntax correctness

    driver.findElement(By.id("inputField")).sendKeys("hello"); uses findElement and sendKeys correctly. Others use invalid methods or wrong parameters.
  3. Final Answer:

    driver.findElement(By.id("inputField")).sendKeys("hello"); -> Option A
  4. Quick Check:

    findElement + sendKeys() = correct syntax [OK]
Hint: Always find element first, then call sendKeys() [OK]
Common Mistakes:
  • Calling sendKeys() directly on driver
  • Using non-existent methods like type()
  • Passing text to click() method
3. What will be the result of the following code snippet?
WebElement input = driver.findElement(By.name("username"));
input.sendKeys("user123");
String value = input.getAttribute("value");
System.out.println(value);
medium
A. It prints an empty string
B. It prints: username
C. It throws NoSuchElementException
D. It prints: user123

Solution

  1. Step 1: Understand sendKeys() effect

    The sendKeys("user123") types "user123" into the input field.
  2. Step 2: Retrieve input value attribute

    The getAttribute("value") returns the current text inside the input, which is "user123".
  3. Final Answer:

    It prints: user123 -> Option D
  4. Quick Check:

    sendKeys() sets value, getAttribute("value") reads it [OK]
Hint: sendKeys() sets input value, getAttribute("value") reads it [OK]
Common Mistakes:
  • Expecting getAttribute("value") to return element name
  • Assuming sendKeys() throws exception without element
  • Thinking printed value is empty
4. Identify the error in the following code snippet that tries to type "admin" into a password field:
WebElement password = driver.findElement(By.id("pass"));
password.sendkeys("admin");
medium
A. Method name should be sendKeys with uppercase K.
B. The locator By.id("pass") is incorrect.
C. sendKeys cannot be used on password fields.
D. Missing driver initialization.

Solution

  1. Step 1: Check method spelling

    The method name is case-sensitive and must be sendKeys with uppercase 'K'.
  2. Step 2: Verify locator and usage

    The locator By.id("pass") is valid and sendKeys works on password fields. Driver initialization is assumed done.
  3. Final Answer:

    Method name should be sendKeys with uppercase K. -> Option A
  4. Quick Check:

    sendKeys() method name is case-sensitive [OK]
Hint: Remember exact method name: sendKeys() with capital K [OK]
Common Mistakes:
  • Typing sendkeys() with lowercase k
  • Assuming sendKeys() can't type passwords
  • Ignoring driver setup errors
5. You want to clear any existing text and then type "hello world" into a search box using Selenium in Java. Which code snippet correctly does this?
hard
A. driver.findElement(By.name("search")).sendKeys(""); driver.findElement(By.name("search")).sendKeys("hello world");
B. driver.findElement(By.name("search")).sendKeys(Keys.CONTROL + "a", Keys.DELETE); driver.findElement(By.name("search")).sendKeys("hello world");
C. driver.findElement(By.name("search")).clear(); driver.findElement(By.name("search")).sendKeys("hello world");
D. driver.findElement(By.name("search")).sendKeys("hello world");

Solution

  1. Step 1: Clear existing text properly

    The clear() method empties the input field safely before typing.
  2. Step 2: Type new text after clearing

    After clearing, calling sendKeys("hello world") types the new text correctly.
  3. Final Answer:

    driver.findElement(By.name("search")).clear(); driver.findElement(By.name("search")).sendKeys("hello world"); -> Option C
  4. Quick Check:

    Use clear() before sendKeys() to reset input [OK]
Hint: Use clear() before sendKeys() to replace text [OK]
Common Mistakes:
  • Trying to delete text with sendKeys() shortcuts incorrectly
  • Sending empty string to clear input
  • Not clearing input before typing new text
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard