使用具有动态值的硒

时间:2012-04-05 11:32:28

标签: selenium

我正在与Selenium RC合作。

我手动将数据提供给selenium。如下所示

selenium.type("id=username","myName");
selenium.type("id=password","myPassword");
selenium.click("id=login");

但是,我怀疑有没有办法动态获取数据?在这里,我将我的姓名直接发送到selenium.type();

有没有办法从textfile或excel文件等其他地方检索用户名和密码?

有任何帮助吗?

1 个答案:

答案 0 :(得分:1)

简短回答 - 是的。

更长的答案 - 您需要对其进行编程。所以不可能使用Selenium IDE,但你可以使用Selenium Webdriver。我在Java中这样做,所以我会给你发一些我的代码片段,我该怎么做。

1)我有特殊的Java Class来保存用户信息:

 public class EUAUser {  

  private String username;
  private String password;
  private boolean isUsed

  public EUAUser(String uname, String pwd){
    this.username = uname;
    this.password = pwd;
    isUsed = false;
  }

   public String getPassword(){
    return password;
   }

 public String getUsername(){
    return username;
 }

 public void lockUser(){
     isUsed = true;
 }
}

2)然后我有UserPool来容纳所有用户。到目前为止,因为我只需要5个不同的用户,我通过快速而肮脏的方法来做到这一点:

 public class UserPool {
private List<EUAUser> userList = new ArrayList<EUAUser>();

public UserPool(){

          userList.add(new EUAUser("firstUser","a"));
          userList.add(new EUAUser("MyUsername", "a"));
          userList.add(new EUAUser("TestUser", "a"));
          userList.add(new EUAUser("TSTUser2", "a"));

       }

  public EUAUser getNextUser() throws RuntimeException {
    for(EUAUser user: userList){          
          if (!user.isUsed()){
              user.lockUser();
              return user;              
      }
    }
    throw new RuntimeException("No free user found.");
}

3)在测试中,我有类似的东西

 UserPool pool = new UserPool();
 EUAUser user = pool.getNextUser();
 selenium.type("id=username", user.getUserName());
 selenium.type("id=password", user.getPassword());
 selenium.click("id=login");

以上代码

  1. 将所有已知用户添加到UserPool
  2. 从泳池中取出一名免费用户
  3. 使用用户名和密码
  4. 将他登录到应用程序

    在我的情况下,它是非常快速和肮脏的方法,但您可以在文件中包含用户列表,并使用fileReader或其他东西将它们加载到UserPool中。只是告诉你如何做到这一点;)