how handle auto suggest in “from” and “destination” box for this website “https://www.goibibo.com/” in selenium

后端 未结 3 1757
感动是毒
感动是毒 2020-12-22 08:12

how handle auto suggest in \"from\" and \"destination\" box for this website \"https://www.goibibo.com/\" in selenium. please help

I tired using the basic method bu

相关标签:
3条回答
  • 2020-12-22 08:34

    Use below code it will work

    Webelement ele=driver.findelement()
    
    Actions ob = new Actions(driver);
    ob.moveToElement(ele);
    ob.click(ele);
    Action action  = ob.build();
    action.perform();
    
    0 讨论(0)
  • 2020-12-22 08:37

    Chrome Browser

    First how to Find XPATH of auto populate box in Chrome Browser open your website than click on Inspect element and click on source Tab now, click for opening your auto populate box and Press F8 Key for pause debugger. Then click on your Element tab and you can easily get your xpath refer below snap for more information. so it will freeze your HTML.

    Now click on Elements an Create your own xpath.

    Fire Fox Browser

    Second how to find xpath of Auto Populate box in Firefox - Open your Firefox and Right click and click on inspect elements on your website. there is option of animation so it will open all your DOM Expanded like below image. so by reading this dom structure you can create easily your XPATH.

    Not how to find Elements from auto populate box. Refer below code snippet for that.

    package com.software.testing;
    
    import java.util.List;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    
    public class Testingclass extends DriverFactory {
    
        private static WebDriver driver = null;
    
        public static void main(String[] args) throws InterruptedException {
    
            System.setProperty("webdriver.chrome.driver", "your driver path");
            driver = new ChromeDriver();
            driver.get("https://www.goibibo.com/");
            new WebDriverWait(driver, 20)
                    .until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='gosuggest_inputSrc']")))
                    .sendKeys("A");
            Thread.sleep(1000);
            List<WebElement> myList = new WebDriverWait(driver, 20).until(ExpectedConditions.presenceOfAllElementsLocatedBy(
                    By.xpath("//div[@class='dib marginL10 pad0 textOverflow width90']/div/span")));
            for (int i = 0; i < myList.size(); i++) {
                System.out.println(myList.get(i).getText());
                if (myList.get(i).getText().equals("Ahmedabad")) {
                    myList.get(i).click();
                    break;
                }
            }
    
        }
    }
    

    Don't forgot to use break after your conditional statement else it will thrown an exception.

    0 讨论(0)
  • 2020-12-22 08:53

    So you can try one solution please find the below screenshot,

    As you can see in screenshot if i type M in text box then dropdown shows the record respect to letter 'M' and if you see in source the <ul> which is dynamic as you see just below <input> so you need to handle that dropdown by it's locator it is dynamic hence first you need to pass some text in text box and after that you need to select the element from the drop down using Select in selenium you use selectByVisibleText("") or what ever or you can use List<Element> you can store all the respected sources (Mumbai, Mysore ,etc)coming from dropdown and use it wisely

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='gosuggest_inputSrc']))).sendKeys("M");
    List<WebElement> myList = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("Xpath of the dynamic drop down")));
    for (WebElement element:myList) {
             if(element.getText().contains("Mumbai"));
             element.click();
        }
    

    i gave you an idea let me know if you need any further help

    0 讨论(0)
提交回复
热议问题