Bird
Raised Fist0
Selenium Javatesting~20 mins

Auto-complete field handling in Selenium Java - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Auto-complete Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Selenium Java code snippet?
Consider the following Selenium Java code that tries to select an option from an auto-complete field. What will be printed to the console?
Selenium Java
WebDriver driver = new ChromeDriver();
driver.get("https://example.com/autocomplete");
WebElement input = driver.findElement(By.id("searchBox"));
input.sendKeys("App");
Thread.sleep(1000); // wait for suggestions
List<WebElement> options = driver.findElements(By.cssSelector("ul.suggestions li"));
for (WebElement option : options) {
    if (option.getText().equals("Apple")) {
        option.click();
        System.out.println("Selected: " + option.getText());
        break;
    }
}
driver.quit();
ASelected: Apple
BNo output, throws NoSuchElementException
CSelected: App
DSelected: Apple Pie
Attempts:
2 left
💡 Hint
Look at the loop and the condition inside it. The code clicks the option with exact text "Apple".
❓ locator
intermediate
1:30remaining
Which locator is best to select all auto-complete suggestions?
You want to locate all suggestion items in an auto-complete dropdown. The HTML structure is:
<ul class="suggestions">
  <li>Apple</li>
  <li>Apricot</li>
  <li>Avocado</li>
</ul>

Which locator will correctly find all <li> elements inside the suggestions list?
ABy.className("li")
BBy.cssSelector("ul.suggestions li")
CBy.xpath("//ul[@class='suggestions']/li")
DBy.id("suggestions")
Attempts:
2 left
💡 Hint
Look for a locator that selects all list items inside the suggestions list by class.
❓ assertion
advanced
1:30remaining
Which assertion correctly verifies the selected auto-complete value?
After selecting "Banana" from an auto-complete field, you want to assert the input field's value is "Banana". Which assertion is correct in Java with JUnit?
Selenium Java
WebElement input = driver.findElement(By.id("fruitInput"));
String value = input.getAttribute("value");
AassertNotNull(value);
BassertTrue(value == "Banana");
CassertFalse(value.equals("Banana"));
DassertEquals("Banana", value);
Attempts:
2 left
💡 Hint
Use the correct JUnit assertion to compare string values for equality.
🔧 Debug
advanced
2:00remaining
Why does this auto-complete selection code fail with ElementNotInteractableException?
Given this code snippet:
WebElement input = driver.findElement(By.id("search"));
input.sendKeys("Che");
List options = driver.findElements(By.cssSelector("ul#list li"));
options.get(0).click();

The test fails with ElementNotInteractableException on the click line. What is the most likely reason?
AThe input field is disabled, so click fails.
BThe locator "ul#list li" is incorrect and finds no elements.
CThe suggestions list is not visible yet when click is attempted.
DThe first option is already selected, so click is redundant.
Attempts:
2 left
💡 Hint
Think about timing and visibility of elements before clicking.
❓ framework
expert
2:30remaining
Which Selenium Java code snippet correctly waits for auto-complete suggestions to appear before selecting "Orange"?
You want to wait up to 5 seconds for the auto-complete suggestions to appear, then select the option "Orange". Which code snippet correctly implements this using WebDriverWait and ExpectedConditions?
A
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("ul.suggestions li")));
List&lt;WebElement&gt; options = driver.findElements(By.cssSelector("ul.suggestions li"));
for (WebElement option : options) {
    if (option.getText().equals("Orange")) {
        option.click();
        break;
    }
}
B
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("Orange")));
WebElement option = driver.findElement(By.id("Orange"));
option.click();
C
Thread.sleep(5000);
WebElement option = driver.findElement(By.xpath("//li[text()='Orange']"));
option.click();
D
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//ul[@class='suggestions']/li[contains(text(),'Orange')]");
WebElement option = driver.findElement(By.xpath("//li[text()='Orange']"));
option.click();
Attempts:
2 left
💡 Hint
Use WebDriverWait with Duration and check visibility of suggestions before clicking.

Practice

(1/5)
1. What is the main purpose of handling an auto-complete field in Selenium testing?
easy
A. To disable the auto-complete feature in the browser
B. To refresh the page automatically after typing
C. To submit the form without entering any data
D. To select the correct suggestion from the dynamic list based on user input

Solution

  1. Step 1: Understand auto-complete behavior

    Auto-complete fields show suggestions dynamically as the user types.
  2. Step 2: Purpose of handling in Selenium

    We need to select the correct suggestion from the list to simulate user interaction accurately.
  3. Final Answer:

    To select the correct suggestion from the dynamic list based on user input -> Option D
  4. Quick Check:

    Auto-complete handling = selecting suggestion [OK]
Hint: Focus on selecting suggestions, not disabling features [OK]
Common Mistakes:
  • Trying to disable auto-complete instead of selecting
  • Ignoring dynamic suggestion list
  • Submitting form without input
2. Which Selenium Java code snippet correctly waits for the auto-complete suggestion list to appear before selecting an option?
easy
A. new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.visibilityOfElementLocated(By.id("suggestions")));
B. driver.findElement(By.id("suggestions")).click();
C. Thread.sleep(10000); driver.findElement(By.id("suggestions")).click();
D. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10)); driver.findElement(By.id("suggestions")).click();

Solution

  1. Step 1: Identify correct wait usage

    Explicit wait with WebDriverWait and ExpectedConditions waits for element visibility properly.
  2. Step 2: Compare with other options

    driver.findElement(By.id("suggestions")).click(); clicks without waiting, C uses Thread.sleep which is not best practice, D uses implicit wait which is less reliable for dynamic elements.
  3. Final Answer:

    new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.visibilityOfElementLocated(By.id("suggestions"))); -> Option A
  4. Quick Check:

    Explicit wait for visibility = new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.visibilityOfElementLocated(By.id("suggestions"))); [OK]
Hint: Use explicit waits with ExpectedConditions for dynamic elements [OK]
Common Mistakes:
  • Using Thread.sleep instead of explicit wait
  • Relying only on implicit waits
  • Clicking before element is visible
3. Given the following code snippet, what will be the value of the input field after execution?
driver.findElement(By.id("searchBox")).sendKeys("App");
new WebDriverWait(driver, Duration.ofSeconds(5))
  .until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("ul.suggestions li")));
List<WebElement> options = driver.findElements(By.cssSelector("ul.suggestions li"));
for (WebElement option : options) {
  if (option.getText().equals("Apple")) {
    option.click();
    break;
  }
}
String value = driver.findElement(By.id("searchBox")).getAttribute("value");
medium
A. "App"
B. "Apple"
C. "" (empty string)
D. Throws NoSuchElementException

Solution

  1. Step 1: Analyze input and wait

    The code types "App" and waits for suggestions to appear.
  2. Step 2: Select matching suggestion

    It loops through suggestions and clicks the one with text "Apple".
  3. Step 3: Check input value after click

    Clicking "Apple" updates the input field value to "Apple".
  4. Final Answer:

    "Apple" -> Option B
  5. Quick Check:

    Selected suggestion text = input value [OK]
Hint: Click matching suggestion updates input value [OK]
Common Mistakes:
  • Assuming input stays as typed text
  • Ignoring wait for suggestions
  • Expecting empty input after click
4. Identify the error in the following Selenium Java code for selecting an auto-complete option:
driver.findElement(By.id("searchBox")).sendKeys("Ban");
List<WebElement> options = driver.findElements(By.cssSelector("ul.suggestions li"));
for (WebElement option : options) {
  if (option.getText().equals("Banana")) {
    option.click();
  }
}
medium
A. Missing explicit wait for suggestions to appear before finding elements
B. Using sendKeys instead of setText method
C. Incorrect CSS selector syntax for suggestions list
D. Not clearing the input field before typing

Solution

  1. Step 1: Check for wait usage

    The code finds suggestions immediately after typing without waiting for them to appear.
  2. Step 2: Consequence of missing wait

    Without explicit wait, options list may be empty causing no click action.
  3. Final Answer:

    Missing explicit wait for suggestions to appear before finding elements -> Option A
  4. Quick Check:

    Wait before findElements = Missing explicit wait for suggestions to appear before finding elements [OK]
Hint: Always wait for suggestions before accessing them [OK]
Common Mistakes:
  • Skipping explicit wait causing empty list
  • Assuming suggestions load instantly
  • Not breaking loop after click
5. You need to write a Selenium Java test to select the suggestion "Cherry" from an auto-complete field with id "fruitInput". The suggestions appear in a ul with class "autocomplete-list" and each suggestion is a li. Which approach correctly handles this scenario including waiting and verification?
hard
A. Send keys "Che", use implicit wait, find li with text "Cherry" and click, no assertion needed
B. Send keys "Cherry" to input, immediately click first li in ul.autocomplete-list, no wait needed
C. Send keys "Che" to input, wait explicitly for visibility of ul.autocomplete-list, find all li, click the one with text "Cherry", then assert input value equals "Cherry"
D. Clear input, send keys "Ch", use Thread.sleep(5000), click last li in ul.autocomplete-list, assert input value contains "Ch"

Solution

  1. Step 1: Send partial keys and wait explicitly

    Typing "Che" triggers suggestions; explicit wait ensures suggestions are visible before interaction.
  2. Step 2: Find and click correct suggestion, then verify

    Find all li elements, click the one with text "Cherry", then assert input value matches to confirm selection.
  3. Final Answer:

    Send keys "Che" to input, wait explicitly for visibility of ul.autocomplete-list, find all li, click the one with text "Cherry", then assert input value equals "Cherry" -> Option C
  4. Quick Check:

    Explicit wait + correct click + assert input value = Send keys "Che" to input, wait explicitly for visibility of ul.autocomplete-list, find all li, click the one with text "Cherry", then assert input value equals "Cherry" [OK]
Hint: Wait explicitly, click matching text, then verify input value [OK]
Common Mistakes:
  • Not waiting explicitly for suggestions
  • Clicking wrong suggestion or without verification
  • Using Thread.sleep instead of explicit wait
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