我尝试使用Junit Request Sampler通过CSV数据集配置登录多个用户的测试应用程序。例如:我将线程数设置为2,并在.csv文件中设置两个用户登录详细信息,然后运行测试。结果打开了两个firefox浏览器,一个浏览器成功登录,另一个没有获取用户名和密码到登录页面的用户名和密码字段。这是我的selenium脚本代码。请有人能说出这个问题的原因吗?
import org.apache.jmeter.protocol.java.sampler.JUnitSampler;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class testClass {
static WebDriver driver;
JUnitSampler sampler = new JUnitSampler();
String userName = sampler.getThreadContext().getVariables().get("username");
String password = sampler.getThreadContext().getVariables().get("password");
String Empnamecsv = sampler.getThreadContext().getVariables().get("Empname");
@BeforeClass
public static void setUpBeforeClass() throws Exception
{
System.setProperty("webdriver.gecko.driver", "D:\\Automation\\Geckodriver\\V0.19.0\\geckodriver.exe");
driver = new FirefoxDriver();
}
@Test
public void loadHomePage() throws InterruptedException
{
driver.get("http://localhost/testWeb");
Thread.sleep(1000);
}
@Test
public void login() throws InterruptedException
{
driver.findElement(By.id("txtusername")).sendKeys(userName);
driver.findElement(By.id("txtpassword")).sendKeys(password);
driver.findElement(By.id("btnsubmit")).click();
Thread.sleep(1000);
String name = driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[3]/span[1]/span[1]")).getText();
Assert.assertEquals(name,namecsv);
}
}
答案 0 :(得分:0)
您的问题是您一次初始化用户名和密码:
String userName = sampler.getThreadContext().getVariables().get("username"); String password = sampler.getThreadContext().getVariables().get("password"); String Empnamecsv = sampler.getThreadContext().getVariables().get("Empname");
在JMeter中,你可以测试JUnit类,但是在这里你好像是在JUnit测试类中创建它:
JUnitSampler sampler = new JUnitSampler();
所以存在一个概念问题。
如果您想使用CSV,请创建一个使用Webdriver Sampler的测试计划,并使用JMeter assertions进行检查。
请参阅此处的示例:
答案 1 :(得分:0)
尝试将“登录”方法更新为:
@Test
public void login() throws InterruptedException {
org.apache.jmeter.threads.JMeterVariables vars = org.apache.jmeter.threads.JMeterContextService.getContext().getVariables();
driver.findElement(By.id("txtusername")).sendKeys(vars.get(userName));
driver.findElement(By.id("txtpassword")).sendKeys(vars.get(password));
driver.findElement(By.id("btnsubmit")).click();
Thread.sleep(1000);
String name = driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[3]/span[1]/span[1]")).getText();
Assert.assertEquals(name, vars.get("Empnamecsv"));
}
参考文献:
还要注意JMeter和Selenium集成的替代方法: