Selenium WebDriver:适用于不同国家/地区

时间:2016-09-27 12:16:49

标签: java eclipse selenium selenium-webdriver

您好我是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)而不总是更改测试类的代码。

就像我说我是新人一样,我不太善于解释事情。

谢谢

2 个答案:

答案 0 :(得分:1)

这是一个伪代码,显示了测试的可能设计:

  1. 为用户创建一个类:

    public class User {
        public String username;
        public String password;
    
        public Users(String username, String password) {
            this.username = username;
            this.password = password;
        }
    }
    
  2. 创建一个类来存储他们的信息(类似于你的静态类):

    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");
    }
    
  3. 使用您要测试的国家/地区列表创建一个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"));

}     否则//有些错误

这样您只需在属性文件中更改选择变量的值即可。