Как в for цикле подставлять входные данные? Java

367
04 сентября 2017, 05:07

Всем привет. Есть вот такой код. Загвоздка в том месте, где я оставил XXXXXXXX. Как мне туда каждый раз в цикле подставлять по очереди входные данные ( с 0-го по последний, один цикл).

public void MenuText (String ExpectedMenuItem1, String ExpectedMenuItem2, String ExpectedMenuItem3, String ExpectedMenuItem4, String ExpectedMenuItem5){
        List<WebElement> allLi = driver.findElements(By.xpath("//ul[@class = 'navbar_item']/li"));
        int sizeAllLi = allLi.size();
        for(int i = 0; i < sizeAllLi; i++){
            Assert.assertEquals(XXXXXXXX, allLi.get(i).getText());
        }

Заранее спасибо.

Answer 1

В методе нужно использовать varargs. Вот так: MenuText(String... yourVars). Внутри метода ты получаешь массив переменной длины в зависимости от того сколько переменных было передано. Ну а потом уже проходишь его циклом и подставляешь значения.

Answer 2

А как мне тогда в этот метод засунуть данные? Так понимаю, это должен быть массив. Это код под Selenium и я хочу использовать TestNG. Входные данные указываю в xml файле. Пока получается так (учитывая ваши советы):

@Test
@Parameters({"ExpectedMenuItem1", "ExpectedMenuItem2", "ExpectedMenuItem3", "ExpectedMenuItem4", "ExpectedMenuItem5"})
public void MenuText (String ... expectedMenuItems){
    driver.get("https://www.medimpact.com/");

    List<WebElement> allLi = driver.findElements(By.xpath("//ul[@class = 'navbar_item']/li"));
    int sizeAllLi = allLi.size();
    for(int i = 0; i < sizeAllLi; i++){
       // Assert.assertEquals(ExpectedMenuItem, allLi.get(i).getText());
        Assert.assertTrue(expectedMenuItems.length > i);
        Assert.assertEquals(expectedMenuItems[i], allLi.get(i).getText());
    }
Answer 3
public void MenuText (String ... expectedMenuItems) {
    List<WebElement> allLi = driver.findElements(By.xpath("//ul[@class = 'navbar_item']/li"));
    int sizeAllLi = allLi.size();
    for (int i = 0; i < sizeAllLi; i++) {
        Assert.isTrue(expectedMenuItems.length > i);
        Assert.assertEquals(expectedMenuItems[i], allLi.get(i).getText());
    }
}
READ ALSO
Как по ASCII коду получить символ?

Как по ASCII коду получить символ?

У меня в программе есть JTextAreaТакже я из файла получаю массив ASCII кодов

404
преобразовать for в виде jstl тега

преобразовать for в виде jstl тега

нужна помощь, заменил данную конструкцию

366
SimpleDateFormat не правит дату по заданному шаблону

SimpleDateFormat не правит дату по заданному шаблону

Пользователь выбирает дату в DatePicker, после чего она записывается в TextInputEditText в формате "числомесяц

382
Как добавить JScrollPane к JPanel?

Как добавить JScrollPane к JPanel?

Есть 20 кнопок на панелиКак добавить к этой панели ползунок что бы я мог выбрать кнопку?

393