本文转载张飞的博客http://www.cnblogs.com/zhangfei/p/4359408.html在此感谢博主的分享!

最早用Jsoup是有一个小的爬虫应用要写,发现Jsoup较HttpClient轻便多了,API也方便易懂,上手很快,对于response的Document解析的选择器用的是cssSelector(Jquery)选择器,觉得还不错,后来因为其它原因,没有深入的研究,最近看到一位大神用这个,我也就再学习了一下,顺便把这个用Jsoup做接口测试的相关知识点发出来给大家参考下!

一. 接口测试的相关知识点准备:

  1.firefox, firebug安装

  2.如何查看请求方式及链接,如下图

  

  我们可以看出,请求的方式是GET, 链接是www.baidu.com

二. Jsoup示例

  1.所使用到的jar包:jsoup-*.jar

  2.示例:(不要使用百度首页来做试验!!!使用百度首页做试验出不来结果的人,不要来问我为什么!!!)  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
 
public class Test {     
    public void testJsop(){
        try {
            Document doc = Jsoup.connect("http://www.cnblogs.com/zhangfei/p/4283930.html").get();
            System.out.println(doc);
        catch (IOException e) {          
            e.printStackTrace();
        }
    }     
    public static void main(String[] args) {
        Test t = new Test();
        t.testJsop();
    }    
}

  输出结果就是当前页面的Document对象,然后再解析这个页面对象就可以了。

三. 参数的处理

  1.Get请求中的参数

  

  对于这种参数,一般有两种写法:

  第一种:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Test {     
    public void testJsop(){
        try {
            Document doc = Jsoup.connect("http://www.cnblogs.com/zhangfei/p/?page=3").get();
            System.out.println(doc);
        catch (IOException e) {          
            e.printStackTrace();
        }
    }     
    public static void main(String[] args) {
        Test t = new Test();
        t.testJsop();
    }     
}

  第二种:  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Test {     
    public void testJsop(){
        try {
            Connection conn = Jsoup.connect("http://www.cnblogs.com/zhangfei/p/");
            conn.data("page","3");
            Document doc = conn.get();         
            System.out.println(doc);
        catch (IOException e) {          
            e.printStackTrace();
        }
    }     
    public static void main(String[] args) {
        Test t = new Test();
        t.testJsop();
    }     
}

  2.post请求中的参数

   post请求的参数,一般以表单提交居多,我们来看看如何确定参数:

  

  上图中,左边红框框是key, 右边红框框是value,一般情况下,在测试系统中,输入用户名与密码就行了,比如:  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Test {     
    public void testJsop(){
        try {
            Connection conn = Jsoup.connect("https://passport.jd.com/new/login.aspx");
            conn.data("loginname","test1");
            conn.data("loginpwd","test1");

conn.header("Accept", "application/json");
                       conn.header("Content-Type", "application/json");

            Document doc = conn.post();        
            System.out.println(doc);
        catch (IOException e) {          
            e.printStackTrace();
        }
    }     
    public static void main(String[] args) {
        Test t = new Test();
        t.testJsop();
    }     
}

在这里就是data就是url末尾?key=value           data=parameter=body

四.响应超时请求处理  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Test {     
    public void testJsop(){
        try {
            Connection conn = Jsoup.connect("https://passport.jd.com/new/login.aspx");
            conn.data("loginname","test1");
            conn.data("loginpwd","test1");
            conn.timeout(30000);
            Document doc = conn.post();        
            System.out.println(doc);
        catch (IOException e) {          
            e.printStackTrace();
        }
    }     
    public static void main(String[] args) {
        Test t = new Test();
        t.testJsop();
    }     
}

五.cookies的管理

  在我们登录后,保存此次登录的cookies,这样,后续的操作才可以继续进行,Jsoup提供了很简便的方式来保存cookies  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Test {     
    public void testJsop(){
        try {
            Connection conn = Jsoup.connect("https://passport.jd.com/new/login.aspx");
            conn.data("loginname","test1");
            conn.data("loginpwd","test1");
            conn.timeout(30000);           
            conn.method(Method.POST);
            Response response = conn.execute();
            Map<String, String> cookies = response.cookies();
            Document doc = Jsoup.connect("http://order.jd.com/center/list.action")
                .cookies(cookies)
                .timeout(30000)
                .get();
        catch (IOException e) {          
            e.printStackTrace();
        }
    }     
    public static void main(String[] args) {
        Test t = new Test();
        t.testJsop();
    }     
}

上面的示例中,可以看出,要取得cookies,必须要有个Response的对象,所以,要用execute方法,如果直接用post方面,返回的则是Document对象,但在用execute方法时,要事先调用一下method方法设定好请求方式即可。

jsoup做http接口测试的更多相关文章

  1. Jsoup做接口测试

    最早用Jsoup是有一个小的爬虫应用要写,发现Jsoup较HttpClient轻便多了,API也方便易懂,上手很快,对于response的Document解析的选择器用的是cssSelector(Jq ...

  2. 《用Python做HTTP接口测试》学习感悟

    机缘巧合之下,报名参加了阿奎老师发布在"好班长"的课程<用Python做HTTP接口测试>,报名费:15rmb,不到一杯咖啡钱,目前为止的状态:坚定不移的跟下去,自学+ ...

  3. 使用 Jmeter 做 Web 接口测试

    接口测试概述 定义 API testing is a type of software testing that involves testing application programming in ...

  4. 【转】使用 Jmeter 做 Web 接口测试

    最近总结了一下在接口测试方面的知识与心得,在这里与大家分享一下,如有说的不对的地方请多多指正. 接口测试概述 定义 API testing is a type of software testing ...

  5. 使用jmeter做web接口测试

    接口测试概述 定义 API testing is a type of software testing that involves testing application programming in ...

  6. 使用 Jmeter 做 Web 接口测试-详解

    接口测试概述 定义 WIKI定义:接口测试作为集成测 试的一部分,通过直接控制API来判断系统的功能性,可靠性,性能与安全性.API测试是没有界面的,执行在通讯 层.API 测试在自动化测试中有着重要 ...

  7. web_custom_request函数做get接口测试

    最近研究了使用loadrunner做接口测试,刚开始一直不成功,后来加了QQ群,遇到大神了,经指导终于成功 下面是具体实例代码: //{"signIOS":1,"sign ...

  8. 怎么做web接口测试

        这就需要开发提供的接口文档了,接口文档和功能测试的需求说明书的功能是一样的.包括:接口说明.调用的url,请求方式(get or post),请求参数.参数类型.请求参数说明,返回结果说明.有 ...

  9. Jmeter做HTTP接口测试

    接口测试概述:https://www.cnblogs.com/mawenqiangios/p/7886115.html Jmeter接口测试教程:https://www.cnblogs.com/hou ...

随机推荐

  1. [java] java 设计模式(2):抽象工厂模式(Abstract Factory)

    工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这 ...

  2. nuget修改配置文件

    https://www.cnblogs.com/seejoy/p/8093837.html 然后将文件解压到需要打包的工程解决方案根目录下. 然后修改nuget文件夹下的 UploadNupkg.ex ...

  3. ios开发之 -- 自动轮播图创建

    这里是oc版本的,简单记录下: 具体代码如下: 1,准备 #define FRAME [[UIScreen mainScreen] bounds] #define WIDTH FRAME.size.w ...

  4. Linux 防火墙:Netfilter

    一.Netfilter 简介 (1) Netfilter 是 Linux 内置的一种防火墙机制,我们一般也称之为数据包过滤机制,而 iptables 只是操作 netfilter 的一个命令行工具(2 ...

  5. Linux下gcc编译生成动态链接库*.so文件并调用它(注:执行Test程序后无需用export 命令指定.so库文件路径:方法在文中下方;)

    动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一 ...

  6. Winform的学习

    昨天由于一些原因没有上课啦,虽然也看啦一些东西,但是感觉太少也就没有来啦,嘿嘿,今天认真地了解啦winform,学习了一些控件的使用,但是感觉好多属性知道怎么用的,却还是记得不太清楚,感觉看到啦知道, ...

  7. C++11-新增正则表达式

    #include <regex> #include <iostream> #include <string> #include <atlstr.h> s ...

  8. iOS设计模式之类族(class cluster)

    类族模式在UIKit(user interface framework)使用的范围已经远远超过我们的想象,比如,UIButton,NSArray,NSString,NSNumber等, 例如NSNum ...

  9. SEH分析笔记(X64篇)

    SEH分析笔记(X64篇) v1.0.0 boxcounter 历史: v1.0.0, 2011-11-4:最初版本. [不介意转载,但请注明出处 www.boxcounter.com  附件里有本文 ...

  10. Ubuntu adb devices :???????????? no permissions (verify udev rules) 解决方法

    Ubuntu adb devices :???????????? no permissions (verify udev rules) 解决方法http://www.cnblogs.com/cat-l ...