通过Rest service获取后台数据的多种方法

开发在开发网页的时候用Rest service来获取Json数据,然后对数据进行组织后显示在网页上,那我们在做自动化测试的时候对这种情况需要验证的有以下2点:

1. Service的数据可以正常被获取到

2. 数据都正确的被网页显示出来并且显示在正确的地方

那么要做这2点验证,自动化测试的具体步骤如下

1. 通过方法获取到这个service中的数据(json,xml)

2、通过解析json或xml来对数据进行整理和提取

3. 验证这些整理过的数据都显示在正确的地方

后面2点再说,对于第一点获取的方法我自己总结的如下:

1. Selenium执行javascript的get来获取

    public String retrieveService(String svcURL) throws Exception{
        String js_GetResponsData =
                "var request = new XMLHttpRequest();"+
                "var ansyType = false;"+
                "request.open(‘GET‘, ‘"+svcURL+"‘,ansyType);"+
                "request.setRequestHeader(‘X-Requested-With‘, ‘XMLHttpRequest‘);"+
                "request.send(null);"+

                "if (request.readyState == 4){" +
                "    if (request.status == 200){" +
                "                return request.responseText;}" +
                "}    ";
        Log.info("Javascript ready to execute:"+js_GetResponsData);
        pause(2000);
        String responseData = (String)jsReturner(js_GetResponsData);
        return responseData;
    }

以上这段代码针对可以直接获取,不需要身份验证的地址,如果需要身份验证的话,那么在Selenium开启网页的时候,用Selenium来登录后再运行这段代码,或者可以用Selenium运行javascript的Post之后再运行,但是针对不同的验证方式(Basic,NTLM) 需要选择不同的验证方式。

2. 用java.net.URL来获取,这个方式的好处在于不需要jar包,直接运行就可,对身份验证的方式也没有特别要求,这里我贴一段对NTLM的验证:

    public String getDataFromNTLM(String Url,String user,String password) {
        String str = null;
        try {
            CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));
            Authenticator.setDefault(new MyAuthenticator(user, password));

            URL url = new URL(Url);
            URLConnection connection = url.openConnection();
            InputStream is = connection.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            while (true) {
                str = br.readLine();
                if (str == null)
                {
                    break;
                }else{
                    return str;
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return str;
    }

3. 用Httpclient来获取数据,这个需要获取jar包,直接贴代码

        DefaultHttpClient hclient = new DefaultHttpClient();
        NTCredentials creds = new NTCredentials("[email protected]", "tenp1108", "BasicRegistry", "etpb-dev.w3ibm.mybluemix.net");
        System.out.println(creds.getUserPrincipal().getName());
        System.out.println(creds.getPassword());
        ((AbstractHttpClient) hclient).getCredentialsProvider().setCredentials(AuthScope.ANY, creds);
        HttpHost target = new HttpHost("etpb-dev.w3ibm.mybluemix.net", 80, "http");
        HttpContext localContext = new BasicHttpContext();
        HttpGet httpget = new HttpGet("/ntlm-protected/info");
        HttpResponse response = hclient.execute(target, httpget, localContext);
        HttpEntity entity1 = response.getEntity();

以上代码是用来pass掉验证NTLM来获取数据的。

当然在以上方法都不奏效的时候,还有最原始的一种方法,就是直接Selenium打开service URL,通过xpath来获取数据。

时间: 2024-12-11 07:47:16

通过Rest service获取后台数据的多种方法的相关文章

Vue axios异步获取后台数据alert提示undefined

记录一个小问题,关于分页查询套餐 前台通过axios异步请求获取后台数据alert弹出数据提示undefined 下面有三个bean PageResult /** * 分页结果封装对象 */ public class PageResult implements Serializable { //总记录数 private Long total; //当前页结果 private List rows; //get,set方法省略 .... } QueryPageBean /** * 封装查询条件 */

前台通过ajax获取后台数据,PHP如何返回中文数据

现在经常使用Ajax调用后台php获取后台数据,但是PHP返回的数据如果含有中文的话,Ajax会无法识别,那咋整呢,我用的是比较笨的方法,但是实用: echo urldecode(json_encode(array('status'=>'1', 'errMsg'=>urlencode('数据传递错误,请重试')))); return;

用ajax获取后台数据,返回json数据,怎么在前台使用?

用ajax获取后台数据,返回json数据,怎么在前台使用呢? 后台 C# code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == "SearchCustomer")                 {                     int ID;                     if (Int32.TryParse(CustomerID, out ID))                     {    

sencha touch 通过.axhx获取后台数据时,Unable to parse the JSON returned by the server: Error: You're trying to

注意:如果你的store跟我一样是使用.ashx从.NET后台获取的,并且用sencha cmd自带的web服务器调试,在chrome调试的时候回会返回如下错误. [WARN][Ext.data.reader.Reader#process] Unable to parse the JSON returned by the server: Error: You're trying to decode an invalid JSON String: <%@ WebHandler Language=&qu

201507221403_《backbone之一——新建模型和集合、实例化模型、模型上监听事件的方法、模型设置和获取后台数据、配置理由方法、视图绑定事件的方法、绑定模型等》

一 . 新建 var model_1 = new Backbone.Model({'name':'hello'}); var model_2 = new Backbone.Model({'name':'hi'}); var models = new Backbone.Collection(); models.add( model_1 ); models.add( model_2 ); alert( JSON.stringify(models) ); 二. 实例化模型 var M = Backbo

用 Python 排序数据的多种方法

用 Python 排序数据的多种方法 目录 [Python HOWTOs系列]排序 Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭代对象(iterable)排序为一个新的有序列表. 本文我们将去探索用 Python 做数据排序的多种方法. 排序基础 简单的升序排序非常容易:只需调用 sorted() 函数,就得到一个有序的新列表: 你也可以使用 list.sort() 方法,此方法为就地排序(并且返回 None 来避免混淆).

php获取当前页面地址多种方法(附教程)

php获取当前页面地址多种方法 有关php取得当前页面地址的多种方法,包括收集的一些实例教程,记录下. 参考教程: PHP中获取当前页面的完整URL php获取当前页面地址参数的三种方法 php获取url地址栏与详细参数实例 php获取当前域名与url地址的例子 php获取当前URL地址 php取得当前页面完整url地址的例子 PHP代码: //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br>"; #localhost //获取网页地址

WPF 获取系统 DPI 的多种方法

原文:WPF 获取系统 DPI 的多种方法 由于 WPF 的尺寸单位和系统的 DPI 相关,我们有时需要获取 DPI 值来进行一些界面布局的调整,本文汇总了一些 WPF 程序中获取系统 DPI 的方法. 首先,定义如下结构体来分别保存 X 方向 和 Y 方向的分量值,通常情况下两个值是一致的. public struct Dpi { public double X { get; set; } public double Y { get; set; } public Dpi(double x, d

获取后台数据分页

html创建一个存放内容的容器,以及分页的容器: <div id="content"></div> <div id="pager"></div> js如下: $.ajax({ url: "url",//headers: {//"AccessToken" : "token"//},  //如果需要 type: "GET/POST", data