使用ArrayList作为函数调用Java

时间:2015-02-10 03:34:53

标签: java arraylist selenium-webdriver

public class TestClass extends BaseClass {
    public void getquote() {
        String FirstName = "Sam";
        String LastName = "Gayle";
        String Email = "somename@somename.com";
        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();
    }
}

}

`我想用循环填充对象而不是如上所述的硬编码索引号。上面是我写的,目前,所有文本框都填充了所有值。请帮忙:(

Thanks.`

3 个答案:

答案 0 :(得分:1)

您可以使用varargs,可以在JLS中找到更多信息:

  

您可以使用名为varargs的构造来传递任意数量的构造   方法的值。当你不知道有多少时,你会使用varargs   特定类型的参数将传递给方法。

因此,您的代码将类似于:

    public void getquote() {

        String firstName = "Sam";
        String lastName = "Gayle";
        String email = "somename@somename.com";
        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]);
    }
    }

答案 1 :(得分:0)

可以代替传递数组/列表,您可以创建一个包含每个变量的所有变量和访问器以及修饰符函数的类。在getQuote()中创建类的对象,并将值附加到同一函数中。稍后您可以简单地传递该对象。

每当有新属性时,您只需将属性添加到类中并在任何地方使用该对象。

答案 2 :(得分: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]);
    }

}

您可能需要更改要发送的字符串的顺序。