JMeter如何使用两个密码验证登录
我正在创建一个jmeter scritp,我所看到的scnerio如下所示: 首先尝试使用密码1登录到应用程序,如果登录失败,则尝试使用密码2,如果使用密码2登录失败,则结果应为失败,否则为通过。JMeter如何使用两个密码验证登录,jmeter,Jmeter,我正在创建一个jmeter scritp,我所看到的scnerio如下所示: 首先尝试使用密码1登录到应用程序,如果登录失败,则尝试使用密码2,如果使用密码2登录失败,则结果应为失败,否则为通过。 我创建了一个HTTP请求和密码1,密码2是用户定义的变量。有两个请求Req_1和Req_2,并使用“登录”操作配置它们,每个密码一个。使用“正则表达式提取器”或其他来解析对Req_1的响应,并使用“If Controller”查看其是否通过,只有在Req_1登录失败时才提交Req_2。有两个Req_1
我创建了一个HTTP请求和密码1,密码2是用户定义的变量。有两个请求Req_1和Req_2,并使用“登录”操作配置它们,每个密码一个。使用“正则表达式提取器”或其他来解析对Req_1的响应,并使用“If Controller”查看其是否通过,只有在Req_1登录失败时才提交Req_2。有两个Req_1和Req_2请求,并使用每个密码的“登录”操作一对它们进行配置。使用“正则表达式提取器”或其他来解析对Req_1的响应,并使用“If Controller”查看其是否通过,只有在Req_1登录失败时才提交Req_2。将BeanShell Sampler添加到测试计划中,并添加以下代码(给定网站的工作代码): 将上述脚本添加到BeanShell采样器中的“脚本”文本区域 图像参考: 注意:根据您的要求替换URL、用户名、密码和错误消息。如果重要,请添加任何标题。 如果要使用HTTP采样器,请按照@SaiMatam建议的流程进行操作
将同一个采样器(仅更改密码)放在If控制器内
。仅当满足条件时,才会执行此采样器将BeanShell Sampler添加到测试计划中,并添加以下代码(给定网站的工作代码): 将上述脚本添加到BeanShell采样器中的“脚本”文本区域 图像参考: 注意:根据您的要求替换URL、用户名、密码和错误消息。如果重要,请添加任何标题。 如果要使用HTTP采样器,请按照@SaiMatam建议的流程进行操作
将同一个采样器(仅更改密码)放在If控制器内
。仅当满足条件时,才会执行此采样器当您提交错误的密码时,服务器是否返回403错误代码?还是在HTML正文中包含错误消息的200个成功代码?您的设计取决于它。@Naveen当我们提交错误的密码时,它返回200个成功代码,正文中有一条错误消息。我使用regEx提取器获取错误消息并将其存储在引用中。当您提交错误密码时,服务器是否返回403错误代码?还是在HTML正文中包含错误消息的200个成功代码?您的设计取决于它。@Naveen当我们提交错误的密码时,它返回200个成功代码,正文中有一条错误消息。我已经使用regEx提取器获取错误消息,并将其存储在引用中。我也在这样做。我在Req_1中使用了正则表达式提取器,并将通过或失败状态存储在名为“StatusCode”的引用变量中。然后使用if控制器查看其是否通过,然后仅在Req_1失败时提交Req_2。这是沃克林很好,我也在做同样的事。我在Req_1中使用了正则表达式提取器,并将通过或失败状态存储在名为“StatusCode”的引用变量中。然后使用if控制器查看其是否通过,然后仅在Req_1失败时提交Req_2。“这是沃克林,很好。”赛义德也这么做。我在Req_1中使用了正则表达式提取器,并将通过或失败状态存储在名为“StatusCode”的引用变量中。然后使用if控制器查看Req_1是否通过,然后仅在Req_1失败时提交Req_2。这是wokring很好,但我想要的是在结果树listner视图中,应该只有一个登录请求,要么通过,要么失败。如果两个密码中的任何一个都有效,则应该是pass。我不太熟悉Beanshell和JSR223后处理器,我想知道是否可以使用它们。我了解核心java。您可以尝试使用BeanShell Sampler并编写java代码,使用HTTPClient库发送HTTP Post请求。完成后,我将发布答案。使用BeanShell采样器生成GET请求的参考信息在这里。我已经尝试过了,但是我无法创建一个HTTP post请求,我们可以尝试使用两个不同的密码登录到一个应用程序。我将继续尝试并等待您的回答:)首先,为登录和发送构建一个HTTP Post请求,然后,您可以通过更改密码来重新发送请求。@Sai也可以这样做。我在Req_1中使用了正则表达式提取器,并将通过或失败状态存储在名为“StatusCode”的引用变量中。然后使用if控制器查看Req_1是否通过,然后仅在Req_1失败时提交Req_2。这是wokring很好,但我想要的是查看结果树列表,那里有shou
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import java.util.List;
import java.util.ArrayList;
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://httpbin.org/post");
List nvps = new ArrayList();
nvps.add(new BasicNameValuePair("username", "vip"));
nvps.add(new BasicNameValuePair("password", "secret"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse response = httpclient.execute(httpPost);
String responseString = EntityUtils.toString(response.getEntity());
String responseCode = String.valueOf(response.getStatusLine().getStatusCode());
String errorMessage = "secret";
if(responseString.contains(errorMessage)){
log.info("first time failed");
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://httpbin.org/post");
List nvps = new ArrayList();
nvps.add(new BasicNameValuePair("username", "vip"));
nvps.add(new BasicNameValuePair("password", "secret"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse response = httpclient.execute(httpPost);
String responseString = EntityUtils.toString(response.getEntity());
String responseCode = String.valueOf(response.getStatusLine().getStatusCode());
if(responseString.contains(errorMessage)){
log.info("second time failed");
IsSuccess = false;
ResponseCode = "403";
ResponseMessage = "Login failed with both the passwords";
}
}
return responseString;