返回List中的所有元素或只返回一个元素

时间:2018-03-09 13:44:58

标签: java list selenium

我进行了以下测试,它会在点击产品图片(项目页面)后比较此网站上的价格http://live.guru99.com/index.php/mobile.html。 第一个代码有一个方法可以访问整个List on Test,而在测试中我调用保存在第二个List中的字符串元素,它适用于我,但我想的是一个只返回一个字符串元素而不是整个列表的方法。 哪种方式更适合测试?

另外第二个脚本还没有正常工作,第二次迭代它给了我java.lang.IndexOutOfBoundsException,我也不知道为什么,也许你可以帮助我? 我的第一个问题是哪种方式更好地返回元素? 在下一个测试案例中,我做了一个只需要一个元素的测试,在这种情况下,方法2会更好,我可以用它来比较价格。

  public void test2(){          //zgodność cen w Mobile i stronach przedmiotów
  BasicConfigurator.configure();
  Logger logger = Logger.getRootLogger();
  driver.get(baseUrl);  
  HomePage objHomePage = new HomePage(driver);
  objHomePage.clickMobile();                    //przejście do mobile
  Mobile objMobile = new Mobile(driver);
  logger.debug(objMobile.getPrices());
  ArrayList<String> prices = new ArrayList<>();
  prices = objMobile.getPrices();               //pobieranie cen do lisy
  List<WebElement> itemLinks = objMobile.getLinks();
  int size = itemLinks.size();                  //rozmiar tablicy
  logger.debug(size);
  Item objItem = new Item(driver);
  String price1, price2;
  for (int i=0; i<size;i++){                    //pętla po produktach
      price1=prices.get(i);                     //pobieranie ceny z Mobile
      itemLinks.get(i).click();
      price2=objItem.getPrices();               //pobieranie ceny z Item
      logger.debug(i);
      logger.debug(price1);
      logger.debug(price2);
      Assert.assertTrue(price1.equals(price2)); //asercja
      driver.navigate().back();                 //powrót do mobile
      }

}

和此测试的页面对象方法:

public ArrayList<String> getPrices(){
    ArrayList<String> pricesList = new ArrayList<>();
    for (WebElement we:prices){
        pricesList.add(we.getText());                   //pobieranie cen
    }
        return pricesList;      
}

第二种方法,该方法有一个参数,并且只返回一个元素

  public void test2(){          //zgodność cen w Mobile i stronach przedmiotów
  BasicConfigurator.configure();
  Logger logger = Logger.getRootLogger();
  driver.get(baseUrl);  
  HomePage objHomePage = new HomePage(driver);
  objHomePage.clickMobile();                    //przejście do mobile
  Mobile objMobile = new Mobile(driver);
  logger.debug(objMobile.getPrices(1));
  ArrayList<String> prices = new ArrayList<>();
  //prices = objMobile.getPrices();             //pobieranie cen do lisy
  List<WebElement> itemLinks = objMobile.getLinks();
  int size = itemLinks.size();                  //rozmiar tablicy
  logger.debug(size);
  Item objItem = new Item(driver);
  String price1, price2;
  for (int i=0; i<size;i++){                    //pętla po produktach
      //price1=prices.get(i);                       //pobieranie ceny z Mobile
      itemLinks.get(i).click();
      price2=objItem.getPrices();               //pobieranie ceny z Item
      logger.debug(i);
      logger.debug(objMobile.getPrices(i));
      logger.debug(price2);
      Assert.assertTrue(objMobile.getPrices(i).equals(price2)); //asercja
      driver.navigate().back();                 //powrót do mobile
      }

第二种方式的页面对象模型方法:

public String getPrices(int index){

    String cena = (prices.get(index)).getText();
        return cena;                    //pobieranie cen    
}

0 个答案:

没有答案