1

I am working with Selenium RC.

I am giving the data manually to selenium.Like below

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

But, my doubt is is there any way to get the data dynamically? Here I am giving my Name directly into selenium.type();

Is there any way to retrieve username and password from other place like textfile or excel file?

Any help?

4

1 回答 1

1

简短的回答 - 是的。

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

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

 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. 使用用户名和密码将他登录到应用程序

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

于 2012-04-05T11:48:53.207 回答