【问题标题】:What we do if we have more parameters to pass?如果我们有更多的参数要传递怎么办?
【发布时间】:2016-05-05 12:55:47
【问题描述】:

解释:

public void login(String userid,String pass)
    {
        driver.findElement(email).sendKeys(userid);
        driver.findElement(password).sendKeys(pass);
        driver.findElement(loginbutton).click();    
    }

如果我想添加新用户,则有超过 2 个几乎 17 到 18 个参数 l 所以在 () 括号中添加所有显示为奇数。

public void AddUser(String UserFName,String UserLName, UserPhone .. etc)
        {
            driver.findElement(Userfname).sendKeys(ufn);
            driver.findElement(UserLname).sendKeys(Uln);
            driver.findElement(phone).sendkeys(phone); .....    
        }

请提出建议..我被困在这一点上..如果有任何需要,我会详细解释。 在此先感谢

【问题讨论】:

  • 你可以在这里使用Builder
  • 对所有字段使用 UserDTO 或 UserBean 怎么样?
  • 如果你必须传递18个参数,你的设计有问题。
  • 只需发送一个用户对象作为参数并在调用方法之前设置所有值。
  • varargs怎么样?

标签: java selenium selenium-webdriver


【解决方案1】:

为什么不将所有这些变量封装到一个 User 对象中,然后将 User 对象作为参数传递呢?

如果你不打算创建对象,使用 Java 似乎有点奇怪!

【讨论】:

    【解决方案2】:

    按照大慧的回答,可以举个例子:

    User user = new User();
    
    user.setUserFName(userfname);
    user.setUserLName(userlname);
    user.setPhone(phone);
    ...
    

    然后在你的方法中:

    public void AddUser(User user)
        {
          //Change your code here
          driver.findElement(user).sendKeys(us);
        }
    

    【讨论】:

      【解决方案3】:

      首先创建一个用户对象,为它们编写 setter 和 getter 方法,然后根据需要填充对象并将用户对象传递给 AddUser 方法

      public class User {
      
      private String userFName = null ;
      private String userLName = null;
      :
      :
      
      public String getUserFName()
      {
      return userFname;
      
      }
      
      public void setUserFname(String name)
      {
      this.userFName = name;
      }
      
      // Do this for all attributes 
      
      }
      

      然后在 AddUser 方法中

      public void AddUser(User usr)
              {
                  driver.findElement(Userfname).sendKeys(usr.getUserFName);
                  driver.findElement(UserLname).sendKeys(usr.getUln);
                  driver.findElement(phone).sendkeys(usr.getphone); 
                  .....    
              }
      

      也学习一下页面工厂模式,它非常简单但非常优雅和有效,如果你打算在 java 和 selenium 中工作,你将需要它

      【讨论】:

      • 感谢 vinod 的重播,以及关于 Page Factory 的建议。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-27
      • 2021-12-06
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多