您好我是Java和Selenium的新手,我正在努力弄清楚一些事情。请原谅我的英语。
假设我有2个或更多国家/地区,我只有一个“testclass”用于登录。
对于Country1,我有用户名:“user1”和密码“pass1”。
对于country2,它是“user2”和“password2”。我不想将用户名和密码硬编码到测试类中,所以我创建了另一个保存变量的例如
public static final String iUsername = "user1";
和
public static final String mUsername = "user2";
。
在测试类中,我会称之为
driver.findElement(By.id("username")).sendKeys(Constant.iUsername);
。
我的问题是如何在开始测试之前选择其他用户名(mUsername)而不总是更改测试类的代码。
就像我说我是新人一样,我不太善于解释事情。
谢谢
答案 0 :(得分:1)
这是一个伪代码,显示了测试的可能设计:
为用户创建一个类:
public class User {
public String username;
public String password;
public Users(String username, String password) {
this.username = username;
this.password = password;
}
}
创建一个类来存储他们的信息(类似于你的静态类):
public class UserFixture {
public static User userUSA = new User("userUSA", "passUSA");
public static User userUK = new User("userUK", "passUK");
public static User userChina = new User("userChina", "passChina");
public static User userFrance = new User("userFrance", "passFrance");
}
使用您要测试的国家/地区列表创建一个HashMap:
public class AccessTest {
List<String> countries = Arrays.asList(
"www.website.com",
"www.website.co.uk",
"www.website.ch",
"www.website.com.fr");
Map<Users, List<String>> userCountries = new HashMap<Users, List<String>>();
userCountries.put(UserFixture.userUSA, countries);
userCountries.put(UserFixture.userUK, countries);
userCountries.put(UserFixture.userChina, countries);
userCountries.put(UserFixture.userFrance, countries);
public static test() {
// u = user; c = country
userCountries.forEach((u, c) ->
c.forEach( country ->
goToUrl(country);
login(u);
// Write the rest of the test below
)
)
}
}
答案 1 :(得分:0)
有很多方法可以做到这一点,但最简单的方法是 -
您可以拥有一个包含用户ID和密码的属性文件,以及一个额外参数(比如Choice = 1或2),用于定义您要使用的用户。这样您就不需要让类保持常量。然后你可以有一个类来读取参数文件。创建一个登录功能,您可以在其中传递登录数据。然后在您的测试类中,您可以根据Choice的值使用ID及其密码。
if(properties.getProperty("Choice") == 1)
{ Login(properties.getProperty("User1Id"),properties.getProperty("Pass1"));
else if (properties.getProperty("Choice") == 2)
{ Login(properties.getProperty("User2Id"),properties.getProperty("Pass2"));
} 否则//有些错误
这样您只需在属性文件中更改选择变量的值即可。