如何使用Java上的SeleniumWebDriver从json调用(Post、get、json)中获取任何值?
我有以下功能:我通过用户表单创建一个新用户。在我提交了输入的数据后,创建了用户获取条形码,该条形码将用于通过手动扫描仪扫描该条形码来访问其他系统部分。那么,如何使用Java上的Selenium WebDriver从json调用(Post、get、json)的条形码中获取任何值呢?Selenium只处理浏览器。 Java有处理http请求的类 请参阅下面的代码:如何使用Java上的SeleniumWebDriver从json调用(Post、get、json)中获取任何值?,java,json,selenium-webdriver,Java,Json,Selenium Webdriver,我有以下功能:我通过用户表单创建一个新用户。在我提交了输入的数据后,创建了用户获取条形码,该条形码将用于通过手动扫描仪扫描该条形码来访问其他系统部分。那么,如何使用Java上的Selenium WebDriver从json调用(Post、get、json)的条形码中获取任何值呢?Selenium只处理浏览器。 Java有处理http请求的类 请参阅下面的代码: private HttpURLConnection setODataConnection(String url, String me
private HttpURLConnection setODataConnection(String url, String method) {
try {
URL obj = new URL(url);
HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
conn.setRequestMethod(method);
// add request header
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept", "application/json;odata=verbose");
return conn;
} catch (Exception e) {
Assert.fail(e.getMessage());
return null;
}
}
private StringBuilder sendODataRequest(HttpURLConnection conn) {
try {
int responseCode = conn.getResponseCode();
String method = conn.getRequestMethod();
System.out.println("\nSending '" + method + "' request to URL : " + conn.getURL());
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response;
} catch (Exception e) {
Assert.fail(e.getMessage());
return null;
}
}
private ArrayList<String> getByFullUrl(String fullUrl, String entity) {
HttpURLConnection conn = setODataConnection(fullUrl, "GET");
StringBuilder response = sendODataRequest(conn);
ArrayList<String> s = new ArrayList<String>();
Pattern p = Pattern.compile(entity + "\" : (.*?)\\}");
Matcher m = p.matcher(response);
while (m.find()) {
s.add(m.group(1).replace("\"", ""));
}
return s;
}
public ArrayList<String> get(String table, String entity) {
String url = oDataUrl + table + "?$select=" + entity;
return getByFullUrl(url, entity);
}
public void post(String table, String bodyDetails) {
String url = oDataUrl + table;
HttpURLConnection conn = setODataConnection(url, "POST");
conn.setDoOutput(true);
try {
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
wr.writeBytes("details={" + bodyDetails + "}");
wr.flush();
wr.close();
} catch (Exception e) {
Assert.fail(e.getMessage());
}
sendODataRequest(conn);
}
public void put(String table, String id, String bodyDetails) {
String url = oDataUrl + table + "(" + id + ")";
HttpURLConnection conn = setODataConnection(url, "PUT");
conn.setDoOutput(true);
try {
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
wr.writeBytes("details={" + bodyDetails + "}");
wr.flush();
wr.close();
} catch (Exception e) {
Assert.fail(e.getMessage());
}
sendODataRequest(conn);
}
私有HttpURLConnection setODataConnection(字符串url,字符串方法){
试一试{
URL obj=新URL(URL);
HttpURLConnection conn=(HttpURLConnection)obj.openConnection();
conn.setRequestMethod(方法);
//添加请求头
conn.setRequestProperty(“内容类型”、“应用程序/json”);
conn.setRequestProperty(“接受”、“应用程序/json;odata=verbose”);
返回连接;
}捕获(例外e){
Assert.fail(如getMessage());
返回null;
}
}
私有StringBuilder sendODataRequest(HttpURLConnection连接){
试一试{
int responseCode=conn.getResponseCode();
String方法=conn.getRequestMethod();
System.out.println(“\n发送“+”方法“+”请求到URL:“+conn.getURL());
System.out.println(“响应代码:“+responseCode”);
BufferedReader in=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
字符串输入线;
StringBuilder响应=新建StringBuilder();
而((inputLine=in.readLine())!=null){
追加(inputLine);
}
in.close();
返回响应;
}捕获(例外e){
Assert.fail(如getMessage());
返回null;
}
}
私有ArrayList getByFullUrl(字符串fullUrl,字符串实体){
HttpURLConnection conn=setODataConnection(fullUrl,“GET”);
StringBuilder响应=sendODataRequest(conn);
ArrayList s=新的ArrayList();
模式p=Pattern.compile(实体+“\”:(.*?\ \));
匹配器m=p.Matcher(响应);
while(m.find()){
s、 添加(m.group(1)。替换(“\”,”);
}
返回s;
}
公共ArrayList get(字符串表、字符串实体){
字符串url=oDataUrl+表格+“?$select=“+实体;
返回getByFullUrl(url,实体);
}
公共作废帖子(字符串表、字符串正文详细信息){
字符串url=oDataUrl+表格;
HttpURLConnection conn=setODataConnection(url,“POST”);
连接设置输出(真);
试一试{
DataOutputStream wr=新的DataOutputStream(conn.getOutputStream());
writeBytes(“details={“+bodyDetails+”}”);
wr.flush();
wr.close();
}捕获(例外e){
Assert.fail(如getMessage());
}
森多达雷克斯特(康涅狄格州);
}
公共void put(字符串表、字符串id、字符串正文详细信息){
字符串url=oDataUrl+table+“(+id+”);
HttpURLConnection conn=setODataConnection(url,“PUT”);
连接设置输出(真);
试一试{
DataOutputStream wr=新的DataOutputStream(conn.getOutputStream());
writeBytes(“details={“+bodyDetails+”}”);
wr.flush();
wr.close();
}捕获(例外e){
Assert.fail(如getMessage());
}
森多达雷克斯特(康涅狄格州);
}
Selenium与json无关。您可以使用Apache HttpClient库发送GET、POST、PUT和DELETE请求并接收响应。下面给出的是适用于所有情况的简化函数
public static HttpResponse sendRequest(String requestType, String body,String url,
String... headers) throws Exception {
try {
HttpGet getRequest = null;
HttpPost postRequest;
HttpPut putRequest;
HttpDelete delRequest;
HttpResponse response = null;
HttpClient client = new DefaultHttpClient();
// Collecting Headers
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
for (String arg : headers) {
//Considering that you are applying header name and values in String format like this "Header1,Value1"
nvps.add(new BasicNameValuePair(arg.split(",")[0], arg
.split(",")[1]));
}
System.out.println("Total Headers Supplied " + nvps.size());
if (requestType.equalsIgnoreCase("GET")) {
getRequest = new HttpGet(url);
for (NameValuePair h : nvps) {
getRequest.addHeader(h.getName(), h.getValue());
}
response = client.execute(getRequest);
}
if (requestType.equalsIgnoreCase("POST")) {
postRequest = new HttpPost(url);
for (NameValuePair h : nvps) {
postRequest.addHeader(h.getName(), h.getValue());
}
StringEntity requestEntity = new StringEntity(body,"UTF-8");
postRequest.setEntity(requestEntity);
response = client.execute(postRequest);
}
if (requestType.equalsIgnoreCase("PUT")) {
putRequest = new HttpPut(url);
for (NameValuePair h : nvps) {
putRequest.addHeader(h.getName(), h.getValue());
}
StringEntity requestEntity = new StringEntity(body,"UTF-8");
putRequest.setEntity(requestEntity);
response = client.execute(putRequest);
}
if (requestType.equalsIgnoreCase("DELETE")) {
delRequest = new HttpDelete(url);
for (NameValuePair h : nvps) {
delRequest.addHeader(h.getName(), h.getValue());
}
response = client.execute(delRequest);
}
return response;
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
公共静态HttpResponse sendRequest(字符串请求类型、字符串正文、字符串url、,
字符串…标头)引发异常{
试一试{
HttpGet getRequest=null;
HttpPost请求;
HttpPut请求;
HttpDelete请求;
HttpResponse响应=null;
HttpClient=new DefaultHttpClient();
//收集标题
List nvps=new ArrayList();
for(字符串参数:标题){
//考虑到您正在以字符串格式应用标题名称和值,如“Header1,Value1”
添加(新的BasicNameValuePair(参数拆分(“,”[0]),参数
.split(“,”[1]);
}
System.out.println(“提供的总页眉数”+nvps.size());
if(requestType.equalsIgnoreCase(“GET”)){
getRequest=新的HttpGet(url);
用于(名称值对h:nvps){
getRequest.addHeader(h.getName(),h.getValue());
}
response=client.execute(getRequest);
}
if(requestType.equalsIgnoreCase(“POST”)){
postRequest=新的HttpPost(url);
用于(名称值对h:nvps){
addHeader(h.getName(),h.getValue());
}
StringEntity requestEntity=新的StringEntity(正文,“UTF-8”);
postRequest.setEntity(requestEntity);
response=client.execute(postRequest);
}
if(requestType.equalsIgnoreCase(“PUT”)){
putRequest=新的HttpPut(url);
用于(名称值对h:nvps){
putRequest.addHeader(h.getName(),h.getValue());
}
StringEntity requestEntity=新的StringEntity(正文,“UTF-8”);
putRequest.setEntity(requestEntity);
response=client.execute(putRequest);
}
if(requestType.equalsIgnoreCase(“删除”)){
delRequest=newhttpdelete(url);
用于(名称值对h:nvps){
delRequest.addHeader(h.getName(),h.getValue());
}
响应=client.execute(delRequest);
}
返回响应;
}捕获(例外e){
e、 printStackTrace();
投掷e;
}
}
不是硒的问题!用谷歌搜索你的语言+帖子。