我在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登录。
答案 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
对于负载测试,您的服务器不关心您的GET / POST / PUT等请求是从浏览器发送还是从命令行通过telnet发送,因为最终它会收到相同的打开浏览器发送一个简单的GET字符串的请求和非常昂贵的过程成为一个明显的矫枉过正。
您尝试测试的流程很容易在JMeter中实现。
另外,同时加载测试变得更加困难,这是JMeter的主要优势之一。现在,您需要考虑特定于语言或测试提供程序的并发问题。
我建议纯粹从JMeter加载测试,因为它已经很强大,在大多数情况下从外部添加任何东西都是不必要的,除非你真的知道你在做什么。