Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java上的SeleniumWebDriver从json调用(Post、get、json)中获取任何值?_Java_Json_Selenium Webdriver - Fatal编程技术网

如何使用Java上的SeleniumWebDriver从json调用(Post、get、json)中获取任何值?

如何使用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

我有以下功能:我通过用户表单创建一个新用户。在我提交了输入的数据后,创建了用户获取条形码,该条形码将用于通过手动扫描仪扫描该条形码来访问其他系统部分。那么,如何使用Java上的Selenium WebDriver从json调用(Post、get、json)的条形码中获取任何值呢?

Selenium只处理浏览器。 Java有处理http请求的类

请参阅下面的代码:

  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;
}
}

不是硒的问题!用谷歌搜索你的语言+帖子。