多用户文件属性Selenium

时间:2015-06-19 11:51:32

标签: java selenium junit webdriver automated-tests

我在Selenium上做了自动测试。这个测试我将从JMeter开始,为10,20,50+用户进行负载测试。我该做什么。我创建了一个属性文件(配置文件),并将URL,Login,Password放入其中。 所以我做了一个循环并把这个代码放在那里,我将启动我的浏览器,登录,访问链接,注销和退出。 这是我在属性文件中的内容:

URL:http://barracuda-qa.ko.kodak.com/d2l/faces/Login.jsp
Login:Test1, Test2, Tesr3
Password:Abc123

这是我在Java中的代码:

public class TestMultiply extends TestCase {
    File file = new File("C:/barracuda/prop.properties");
    private FileInputStream fileInput = null;
    private WebDriver driver;
    public FirefoxProfile profile = new FirefoxProfile();
    public int index=0;

    public TestMultiply(){}

    public TestMultiply(String testName){
        super(testName);
    }

    @Before
    public void setUp() throws Exception {
        super.setUp();
    }


    @Test
    public void testTestLoad() throws InterruptedException {

        try {
            fileInput = new FileInputStream(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        Properties prop = new Properties();
        try {
            prop.load(fileInput);
        } catch (IOException e) {
            e.printStackTrace();
        }
        driver = new FirefoxDriver();

        for (int i= 0; i<prop.getProperty("Login").length(); i++){
            //String login = prop.getProperty("Login"+i);
            Thread t1 = new Thread(new Runnable() {
                @Override
                public void run() {
                    driver = new FirefoxDriver();
                    driver.get(prop.getProperty("URL"));
                    driver.findElement(By.id("loginForm:authLogin")).sendKeys(login);
                    driver.findElement(By.id("loginForm:authPassword")).sendKeys(prop.getProperty(key));
                    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
                    driver.findElement(By.id("loginForm:btnLogin")).click();
                    driver.manage().timeouts().implicitlyWait(2000, TimeUnit.SECONDS);
                    driver.findElement(By.id("settingsLink"));
                    driver.manage().timeouts().implicitlyWait(2000, TimeUnit.SECONDS);
                    driver.findElement(By.xpath("//a[@class='logout']")).click();
                    driver.quit();
                }
            }); t1.start();  Thread.sleep(10000);

        }
    }

    @After
    public void tearDown() throws Exception {
        super.tearDown();
    }

}

我需要为multylogin制作一个循环。它应该在“登录”字段中循环,从我的属性文件中粘贴一个登录名,并为所有用户使用相同的密码。 例如,我的属性文件具有结构:

URL:http://barracuda-qa.ko.kodak.com/d2l/faces/Login.jsp
Login:Test1, Test2
Password:Abc123

所以我们应该启动浏览器2次,然后以Test1 - Abc123和Test2 - Abc123登录。

2 个答案:

答案 0 :(得分:0)

  

所以我们应该启动浏览器2次,然后登录为Test1 - Abc123   和Test2 - Abc123。

简而言之,您需要从属性文件中获取(Login)逗号分隔的字符串,将其拆分并保存在列表中。在for循环中使用它。

List<String> items = Arrays.asList(config.getProperty("Login").split("\\s*,\\s*"));

上面的代码应该为您提供所需的列表,然后您可以实现多次登录,如下所示:

for (int i=0; i<items.size(); i++){
        driver.get(config.getProperty("URL"));

        //here goes your multiple user name
        usernameEditBox.sendKeys(items.get(i).trim());

        //here is your same password
        passwordEditBox.sendKeys(config.getProperty("Password"));

        signinButton.click();
        logout.click();
}

您可以在此处查看完整的课堂观点:ClickME

答案 1 :(得分:0)

不是答案,而是建议。

在我看来,你选择的方法很奇怪。

当您使用JMeter 执行负载测试时,您会针对某些资源发送一定数量的请求,并检查您的服务器/应用程序处理所有请求的效果以及生成结果的速度。< / p>

当您使用Selenium 测试 UI时,主要关注的是确保您的Web应用程序的所有基本功能都在浏览器窗口中呈现给用户,并且不会崩溃/隐藏,并且所有可以使用浏览器完成必要的工作流程,作为与服务器通信的手段。

对于负载测试,您的服务器不关心您的GET / POST / PUT等请求是从浏览器发送还是从命令行通过telnet发送,因为最终它会收到相同的打开浏览器发送一个简单的GET字符串的请求和非常昂贵的过程成为一个明显的矫枉过正。

您尝试测试的流程很容易在JMeter中实现。

另外,同时加载测试变得更加困难,这是JMeter的主要优势之一。现在,您需要考虑特定于语言或测试提供程序的并发问题。

我建议纯粹从JMeter加载测试,因为它已经很强大,在大多数情况下从外部添加任何东西都是不必要的,除非你真的知道你在做什么。