Sh87
Sh87

Reputation: 326

XPath for auto-suggestion list is not working

On https://www.zillow.com I am trying to verify search using auto suggestion box. I have written below code:

public static void verifySearch() {
        try {
            WebElement searchbar = driver.findElement(By.id("search-box-input"));
            searchbar.sendKeys("sea");
            // Thread.sleep(10);
            WebDriverWait wait = new WebDriverWait(driver,30);
            wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//ul[@role='listbox']/li")));

            List<WebElement> list = driver.findElements(By.xpath("//ul[@role='listbox']//li"));


            System.out.println("Total no of suggestions in search box:::====> " + list.size());

            for (int i = 0; i < list.size(); i++) {

                System.out.println(list.get(i).getText());

                if (list.get(i).getText().contains("Seattle WA")) {
                    /*
                     * JavascriptExecutor js = (JavascriptExecutor)driver;
                     * js.executeScript("arguments[0].click();", list.get(i));
                     */

                    list.get(i).click();

                    break;
                    }
            }

            System.out.println("out");


        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println(e);
            e.printStackTrace();
        }

Here for auto suggestion list I am using following xpath but it doesn't work at run time:"//ul[@role='listbox']//li" Can anybody guide where I am wrong. Note:on this website autosuggestion is starts to be displayed after 3chars in search field.

Upvotes: 0

Views: 127

Answers (1)

UnknownBeast
UnknownBeast

Reputation: 979

Here my friend. Please try to execute the below code. You can now try to fix your issue with this simple solution.

 try {
                WebElement searchbar = driver.findElement(By.id("search-box-input"));

                searchbar.click();
                for( char character : "sea".toCharArray() )
                {
                      searchbar.sendKeys(String.valueOf(character));
                      Thread.sleep(2000);
                }

                List<WebElement> list = driver.findElements(By.xpath("//ul[@role='listbox']//li"));


                System.out.println("Total no of suggestions in search box:::====> " + list.size());

                for (int i = 0; i < list.size(); i++) {

                    System.out.println(list.get(i).getText());

                    if (list.get(i).getText().contains("Seattle WA")) {
                        /*
                         * JavascriptExecutor js = (JavascriptExecutor)driver;
                         * js.executeScript("arguments[0].click();", list.get(i));
                         */

                        list.get(i).click();

                        break;
                        }
                }

                System.out.println("out");


            } catch (Exception e) {
                // TODO Auto-generated catch block
                System.out.println(e);
                e.printStackTrace();
            }

Upvotes: 1

Related Questions