Search code examples
javaseleniumxpathcss-selectorsautosuggest

How to select the auto suggestion from the dynamic dropdown using Selenium and Java


I am trying to select the value for Subjects field in the following form: https://demoqa.com/automation-practice-form

It is an input field that dynamically gives suggestions based on our input and later we need to select values from those suggestions. I am unable to select the desired value.

The Below code only populates the input area but the value is not selected.

driver.findElement(By.id("subjectsInput")).sendKeys("English");
driver.findElement(By.id("subjectsInput")).click(); //This line doesnot click on the desired value.

How to Select the desired value. Please help.


Solution

  • To invoke click on the only auto suggestion English you need to induce WebDriverWait for the elementToBeClickable() and you can use either of the following Locator Strategies:

    • cssSelector:

      driver.get("https://demoqa.com/automation-practice-form");
      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#subjectsInput"))).sendKeys("English");
      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.subjects-auto-complete__menu"))).click();
      
    • xpath:

      driver.get("https://demoqa.com/automation-practice-form");
      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='subjectsInput']"))).sendKeys("English");
      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[contains(@class, 'subjects-auto-complete__menu')]"))).click();
      
    • Browser Snapshot:

    toolsqa_subject