我进行了以下测试,它会在点击产品图片(项目页面)后比较此网站上的价格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
}