An auto-complete field is an input box that suggests possible completions as the user types, helping them select from a list of options.
Click to reveal answer
intermediate
How do you locate the suggestions list in an auto-complete field using Selenium?
You locate the suggestions list by identifying the container element that holds the suggested options, often using CSS selectors or XPath based on class or id attributes.
Click to reveal answer
beginner
Why is waiting important when handling auto-complete fields in Selenium?
Because suggestions load dynamically, waiting ensures the list appears before interacting, preventing errors from trying to select options that are not yet visible.
Click to reveal answer
intermediate
Show a simple Java Selenium code snippet to select an option from an auto-complete list.
What is a common challenge when testing auto-complete fields and how to overcome it?
A common challenge is timing issues because suggestions load asynchronously. Using explicit waits like WebDriverWait with ExpectedConditions helps ensure elements are ready before interaction.
Click to reveal answer
What Selenium method is best to wait for auto-complete suggestions to appear?
Adriver.navigate().refresh()
BWebDriverWait with ExpectedConditions.visibilityOfElementLocated
Cdriver.findElement() without wait
DThread.sleep()
✗ Incorrect
Using WebDriverWait with ExpectedConditions.visibilityOfElementLocated waits dynamically for the suggestions to appear, making tests reliable.
Which locator strategy is recommended for finding auto-complete options?
ABy.cssSelector or By.xpath targeting the suggestions container
BBy.tagName("input") only
CBy.className("random") without context
DBy.id("nonexistent")
✗ Incorrect
Using CSS selectors or XPath targeting the suggestions container is precise and reliable for locating auto-complete options.
Why should you avoid using Thread.sleep() for waiting in auto-complete tests?
AIt waits dynamically for elements
BIt automatically retries until element appears
CIt causes fixed delays and can slow tests unnecessarily
DIt is the best practice for waiting
✗ Incorrect
Thread.sleep() causes fixed waits which can slow tests and are less reliable than dynamic waits like WebDriverWait.
What is the first step to interact with an auto-complete field in Selenium?
ASend keys to the input field to trigger suggestions
BClick the first suggestion without typing
CRefresh the page
DClose the browser
✗ Incorrect
Typing into the input field triggers the auto-complete suggestions to appear.
How do you select a specific suggestion from the auto-complete list?
AUse driver.quit()
BClick the input field again
CSend keys to the browser console
DFind all suggestions, loop through them, and click the matching one
✗ Incorrect
You find all suggestion elements, check their text, and click the one that matches your target.
Explain the steps to automate selecting an option from an auto-complete field using Selenium in Java.
Think about typing, waiting, finding, and clicking.
You got /6 concepts.
What are the best practices to handle timing issues when testing auto-complete fields?
Focus on waiting smartly for elements.
You got /4 concepts.
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
Step 1: Understand auto-complete behavior
Auto-complete fields show suggestions dynamically as the user types.
Step 2: Purpose of handling in Selenium
We need to select the correct suggestion from the list to simulate user interaction accurately.
Final Answer:
To select the correct suggestion from the dynamic list based on user input -> Option D
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
Step 1: Identify correct wait usage
Explicit wait with WebDriverWait and ExpectedConditions waits for element visibility properly.
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.
Final Answer:
new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.visibilityOfElementLocated(By.id("suggestions"))); -> Option A
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
Step 1: Analyze input and wait
The code types "App" and waits for suggestions to appear.
Step 2: Select matching suggestion
It loops through suggestions and clicks the one with text "Apple".
Step 3: Check input value after click
Clicking "Apple" updates the input field value to "Apple".
Final Answer:
"Apple" -> Option B
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
Step 1: Check for wait usage
The code finds suggestions immediately after typing without waiting for them to appear.
Step 2: Consequence of missing wait
Without explicit wait, options list may be empty causing no click action.
Final Answer:
Missing explicit wait for suggestions to appear before finding elements -> Option A
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
Step 1: Send partial keys and wait explicitly
Typing "Che" triggers suggestions; explicit wait ensures suggestions are visible before interaction.
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.
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
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 unknownstrongwhile earning +1 Grip toward your certificate.