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();
}
}
}
"Я хотел бы заполнить объекты, используя цикл, а не номер жестко закодированного индекса, как упоминалось. Выше это то, что я написал, на данный момент все текстовые поля заполняются всеми значениями. Пожалуйста помоги :(
Благодаря.'
Вы можете использовать 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]);
}
}
var.length
и var[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]);
}
}
Возможно, вам придется изменить порядок строк, которые вы отправляете.
Может быть, вместо передачи массива/списка вы можете создать класс, содержащий все переменные и аксессоры и функции-модификаторы для каждой переменной. Создайте объект класса в getQuote() и добавьте значения в одну и ту же функцию. Позже вы можете просто передать объект.
И всякий раз, когда у вас есть новый атрибут, вы можете просто добавить атрибуты в класс и использовать объект где угодно.