多用户文件 属性 Selenium

Multi user file property Selenium

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

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。

So we should start browser 2 times and it'll login as Test1 - Abc123 and 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();
}

您可以在此处查看完整的 class 视图:ClickME

不是答案,而是建议。

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

当您使用 JMeter 执行 负载测试时,您会针对某些资源发送一定数量的请求,并检查您的 server/application 处理所有请求的情况以及如何很快就出结果了。

当您使用 Selenium 测试 UI 时,主要重点是确保您的 Web 应用程序的所有基本功能都在浏览器中呈现给用户 window 而不是 crashed/hidden 并且所有必要的工作流都可以使用浏览器作为与服务器通信的方式来完成。

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

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

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

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