我可以使用下面的代码找到可用航班的最低价格,但是我仍然停留在如何单击价格最低的“立即预订”按钮上。
有人可以帮忙吗?
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));
}