selenium学习:去哪儿网订票示例

上一篇 / 下一篇  2016-01-28 15:21:24 / 个人分类:selenium

1)Qunar机票搜索场景访问Qunar机票首页http://flight.qunar.com,选择“单程”,输入出发、到达城市,选择today+7日后的日期,点“搜索”,跳转到机票单程搜索列表页。2)在列表页停留1分钟,至到页面上出现“搜索结束”。3) 如果出现航班列表,随机点选“订票”按钮.

代码思路:

1)定义变量及浏览器启停方法和硬等待方法

publicWebDriverdr;

privateDatefromDate;

privateSimpleDateFormatsdf;  

//启动火狐浏览器

   publicvoidstartFireFox(){

       dr=newFirefoxDriver();

       dr.manage().window().maximize();

    }

       //关闭浏览器病释放资源

   publicvoidcloseFireFox(){

       dr.close();

       dr.quit();

    }

       //导航到相关页面

   publicvoidgoToUrl(String url){

       dr.navigate().to(url);

    }

       //设置硬等待方法

   publicvoidwaitSix(){

       try{

            Thread.sleep(6000);

        }catch(InterruptedException e) {

           //TODOAuto-generated catch block

            e.printStackTrace();

        }

    }

 2)建几个获取页面元素方法

不需要智能等待就可以获取元素

   privateWebElement getElementNotWait(finalBy by){

        WebElement element =null;

       try{

            element =dr.findElement(by);

        }catch(Exception e){

            element =null;

        }

       returnelement;

    }

 智能等待获取页面单个元素

   //通过driver、等待时间(智能等待)、by获取页面元素

privateWebElement getElementNeedWait(WebDriver driver,intwaittime,finalBy by){

        WebElement ele =null;

         booleanflag =newWebDriverWait(driver, waittime)

         .until(newExpectedCondition<Boolean>() {

            publicBoolean apply(WebDriver d) {

                returnd.findElement(by).isDisplayed();

             }

         });

         if(flag){

             ele = driver.findElement(by);

         }

             returnele;

    }

 智能等待获取页面元素集

//通过driver、等待时间(智能等待)、by获取页面元素

privateWebElement getElementNeedWait(WebDriver driver,intwaittime,finalBy by){

        WebElement ele =null;

         booleanflag =newWebDriverWait(driver, waittime)

         .until(newExpectedCondition<Boolean>() {

            publicBoolean apply(WebDriver d) {

                returnd.findElement(by).isDisplayed();

             }

         });

         if(flag){

             ele = driver.findElement(by);

         }

             returnele;

    }

 3)建时间处理方法

//    获取当前的日期字符串

   privateString getFromDate() {

       fromDate=newDate();

       sdf=newSimpleDateFormat("yyyy-MM-dd");

       returnsdf.format(fromDate);

    }

 //获得7天后的日期的字符串

   privateString getToSevenDate() {

   fromDate=newDate();

   sdf=newSimpleDateFormat("yyyy-MM-dd");

        Calendar c = Calendar.getInstance();

        c.setTime(fromDate);

        c.add(Calendar.DAY_OF_MONTH, +7);

       returnsdf.format(c.getTime());

}

 4)获得给定数量x的【0x-1】间的随机整数

   privateintgetRandom(intcount) {

       return(int) Math.round(Math.random() * (count - 1));

    }

 5去哪儿网订票示例方法

publicvoidtestBooking(){

   //获取单选框元素并点击

   this.getElementNeedWait(dr, 10, By.id("searchTypeSng")).click();

   //获取出发城市输入框,清空并设置相关内容

   this.getElementNeedWait(dr, 10, By.name("fromCity")).clear();

   this.getElementNeedWait(dr, 10, By.name("fromCity")).sendKeys("杭州(HGH)");

    //获取到达城市输入框,清空并设置相关内容

   this.getElementNeedWait(dr, 10, By.name("toCity")).clear();

   this.getElementNeedWait(dr, 10, By.name("toCity")).sendKeys("**(SZX)");

    //获得出发日期输入框,清空并设置当前日期后七天的日期字符

   this.getElementNeedWait(dr, 10, By.id("fromDate")).clear();

   this.getElementNeedWait(dr, 10, By.id("fromDate")).sendKeys(this.getFromDate());

   //获得搜索框按钮,点击搜索

   this.getElementNeedWait(dr, 10, By.cssSelector(".btn_search")).click();

    //定位搜索出来的航班信息列表中有订票信息的元素

    By by1 = By.xpath(".//*[@class='a-booking']//a[@class='btn-book']"

List<WebElement> listElements =this.getAllResultElement(dr,60,by1);

    WebElement elementButton =null;

   //如果获取的页面元素集为空,则没有合适的航班,如果有则随机选择航班并点击订票按钮

   if(listElements.isEmpty()){

        System.out.println("该时间内两城市间没有合适的航班可选择!");

    }else{

        elementButton = listElements.get(this.getRandom(listElements.size()));

        elementButton.click();

    }

   this.waitSix();

}

 

6)最后通过main函数调用相关方法

TAG: 去哪儿网 订票

引用 删除 gejinjun   /   2016-03-08 16:29:20
123
 

评分:0

我来说两句

我的栏目

日历

« 2024-05-07  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 29631
  • 日志数: 8
  • 建立时间: 2015-12-29
  • 更新时间: 2016-01-28

RSS订阅

Open Toolbar