【问题标题】:Multi user file property Selenium多用户文件属性 Selenium
【发布时间】:2015-06-19 11:51:32
【问题描述】:

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

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();
    }

}

我需要为多登录创建一个循环。它应该在登录字段中循环粘贴我的属性文件中的一个登录名,所有用户使用相同的密码。 例如我的属性文件有结构:

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

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

【问题讨论】:

    标签: java selenium junit webdriver automated-tests


    【解决方案1】:

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

    简而言之,您需要从属性文件中获取(登录)逗号分隔的字符串,将其拆分并保存在列表中。在 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

    【讨论】:

    • 没关系,但是如何让当时一起启动,大概10个用户?
    • 它是什么,它在做什么? "拆分("\\s*,\\s*"))"
    • 您的问题是获取多个用户/登录表单属性文件并使用一个密码循环通过,这正是上面代码中所做的。关于您的第二条评论,我已经解释了答案中的作用。如果您现在询问是否同时启动它,那是一个不同的问题! - 查看完整的课程视图了解更多信息
    【解决方案2】:

    不是答案,而是建议。

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

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

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

    为了负载测试你的服务器不关心你的 GET/POST/PUT 等请求是从浏览器还是从命令行通过 telnet 发送的,因为最终它会收到相同的请求和打开浏览器以发送简单的 GET 字符串的非常昂贵的过程变得明显过度。

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

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

    我建议完全从 JMeter 进行负载测试,因为它已经很强大了,并且在大多数情况下从外部添加任何东西都是不必要的,除非你真的知道自己在做什么。

    【讨论】:

    • 我知道,我在这里发布的这个测试只是一个简单的例子。但是我应该编写自动化测试,然后在 JMeter 上运行它是公司的要求。
    • 用逻辑对抗系统)您可以在 JMeter 上复制与在 Selenium 上大致相同的自动化,而服务器不会知道,但效率提升是巨大的。
    猜你喜欢
    • 2014-05-11
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 2012-07-21
    • 2018-04-23
    • 2010-09-05
    • 1970-01-01
    相关资源
    最近更新 更多