Использование ArrayList в качестве вызова функции Java

1
public class TestClass extends BaseClass {
    public void getquote() {
        String FirstName = "Sam";
        String LastName = "Gayle";
        String Email = "[email protected]";
        String Password = "test1234";
        CallGetQuote(FirstName, LastName, Email, Password);
}

private void CallGetQuote(String... var) {
    for (int i = 0; i < var.length; i++) {
        driver.findElement(By.id("first-name")).sendKeys(var[i]);
        driver.findElement(By.id("last-name")).sendKeys(var[i]);
        driver.findElement(By.id("join-email")).sendKeys(var[i]);
        driver.findElement(By.id("join-password")).sendKeys(var[i]);
        // driver.findElement(By.name("btn-submit")).click();
    }
}

}

"Я хотел бы заполнить объекты, используя цикл, а не номер жестко закодированного индекса, как упоминалось. Выше это то, что я написал, на данный момент все текстовые поля заполняются всеми значениями. Пожалуйста помоги :(

Благодаря.'

  • 0
    Вы ищете вариадную функцию ? Трудно сказать, что вы ищете.
  • 0
    На самом деле я изучаю некоторую автоматизацию пользовательского интерфейса, используя селен, и мне нужно передать несколько значений, чтобы заполнить объекты в форме. Количество аргументов может измениться в будущем, если в форму будет добавлено больше объектов.
Показать ещё 3 комментария
Теги:
arraylist
selenium-webdriver

3 ответа

1
Лучший ответ

Вы можете использовать varargs, более подробную информацию можно найти в JLS:

Вы можете использовать конструкцию varargs для передачи произвольному количеству значений методу. Вы используете varargs, когда не знаете, сколько определенного типа аргументов будет передано методу.

Таким образом, ваш код будет выглядеть примерно так:

    public void getquote() {

        String firstName = "Sam";
        String lastName = "Gayle";
        String email = "[email protected]";
        String password = "test1234";

        CallGetQuote(FirstName, LastName, Email, Password);

    }

    public void CallGetQuote(String... var) {

        // add your elements to a List
        List<MyElements> inputElements = new ArrayList<MyElements>;

        inputElements.add(driver.findElement(By.id("first-name")));
        inputElements.add(driver.findElement(By.id("last-name"))); 
        inputElements.add(driver.findElement(By.id("join-email")));  
        inputElements.add(driver.findElement(By.id("join-password")));

        // iterate over the List to send keys
        for (int i = 0; i < var.length; i++) {
        inputElements.get(i).sendKeys(var[i]);
    }
    }
  • 2
    Поскольку OP, вероятно, не знает, что это возможно, стоит отметить, что var обрабатывается как массив. Таким образом, вы можете использовать такие вещи, как var.length и var[0] .
  • 0
    спасибо @KacyRaye за уведомление
0

что вы указали только определенное количество входов на веб-странице, вы можете попробовать это.

public void getquote() {
    String FirstName = "Sam";
    String LastName = "Gayle";
    String ZipCode = "10104";
    String PhoneNumber = "212-225-8558";
    CallGetQuote(FirstName, LastName, ZipCode, PhoneNumber);
}

public void CallGetQuote(String... var) {
    List<Webelement> inputs = driver.findElements(By.tagName("input"));
    for (int i = 0; i < var.length; i++) {
        inputs.get(i).sendKeys(var[i]);
    }

}

Возможно, вам придется изменить порядок строк, которые вы отправляете.

0

Может быть, вместо передачи массива/списка вы можете создать класс, содержащий все переменные и аксессоры и функции-модификаторы для каждой переменной. Создайте объект класса в getQuote() и добавьте значения в одну и ту же функцию. Позже вы можете просто передать объект.

И всякий раз, когда у вас есть новый атрибут, вы можете просто добавить атрибуты в класс и использовать объект где угодно.

  • 0
    @Tarik, спасибо за помощь, я хотел бы использовать цикл, а не жесткие значения индекса кодирования для заполнения текстовых полей. Пожалуйста, дайте мне знать, что я делаю неправильно в моем последнем коде. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню