如何使用Selenium Java从Makemytrip网站预订价格最低的航班?

时间:2020-05-23 13:59:55

标签: java selenium-webdriver

我可以使用下面的代码找到可用航班的最低价格,但是我仍然停留在如何单击价格最低的“立即预订”按钮上。

有人可以帮忙吗?

    public static void main(String[] args) throws ParseException {

        WebDriver driver = new ChromeDriver();
        System.setProperty("webdriver.chrome.driver", "browserPath");
        driver.get("https://www.makemytrip.com/");
        WebElement element=driver.findElement(By.id("fromCity"));
        element.click();
        WebElement fromInput = driver.findElement(By.xpath("//div[@role='combobox']//child::input[@type='text']"));
        fromInput.sendKeys("mum");

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

        for(WebElement down : fromDrop) {
            String city =down.getText();
            //System.out.println(city);
            if(city.contains("Mumbai, India")) {
                down.click();
                break;
            }
        }

        WebElement toInput = driver.findElement(By.xpath("//div[@role='combobox']//child::input[@type='text']"));
        toInput.sendKeys("del");

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

        for(WebElement down : toDrop) {
            String city =down.getText();
            //System.out.println(city);
            if(city.contains("Delhi, India")) {
                down.click();
                break;
            }
        }

        String beforexpath= "//*[@id='root']/div/div[2]/div/div/div[2]/div[1]/div[3]/div[1]/div/div/div/div[2]/div/div[2]/div[2]/div[3]/div[";
        String afterxpath="]/div[";
        boolean flag = false;
        for(int rownum=1;rownum<=6;rownum++) {
            for(int colnum=1;colnum<=7;colnum++) {

                WebElement day = driver.findElement(By.xpath(beforexpath+rownum+afterxpath+colnum+"]"));
                String text1=day.getText();
                //System.out.println(text1);

                if(text1.contains("10")) {
                    day.click();
                    flag= true;
                    break;
                }
            }
            if(flag) {
                break;
            }
        }

        driver.findElement(By.xpath("//a[contains(text(), 'Search')]")).click();

//Clicked on search button now we are on the search results(Flights with different prices)
        for(int second=0;second<=20;second++) {


            JavascriptExecutor js =(JavascriptExecutor)driver;
            js.executeScript("window.scrollBy(0,200)", "");

        } 
        List<WebElement> price= driver.findElements(By.xpath("//div[@class='fli-intl-lhs pull-left']//div[@class='pull-left  make_relative price']//p"));


        List<Integer> list=new ArrayList<Integer>();
        for(WebElement value:price) {
            String money=value.getText();
            String arrmon[]=money.split(" ");

            for(int i=1;i<arrmon.length;i++) {
                String text =arrmon[i];

                NumberFormat india  = NumberFormat.getInstance();
                Number number = india.parse(text);
                String conversion =number.toString();

                int lowprice = Integer.parseInt(conversion);


                list.add(lowprice);

            }
        }
        System.out.println("The cheaper price is:"+Collections.min(list));


    }

0 个答案:

没有答案