最近学习了Jmeter的简单操作,很想找点东西来实战一下,因为我之前写过一篇通过Python模拟登录的文章,于是便想尝试下学习通过Jmeter来模拟登录。

本人环境:Jmeter5.1.1

关于Github登录的过程,在这里就不详细说了,有兴趣的可以看我之前的文章: 利用Python模拟GitHub登录

通过Jmeter模拟Github登录的所有设置如下:

1. Jmeter设置请求头和Cookies管理器

首先,我们需要创建1个测试计划(相当于测试项目),测试计划下创建1个线程组(相当于测试场景),然后在线程组下设置请求头(线程组->添加->配置元件->HTTP信息头管理器),设置如下:

在之前的Python文章中,我是设置Session会话对象来帮助自动保存cookies信息的,那么在Jmeter中,我们也可以设置HTTP Cookies管理器来自动保存cookies。

为了达到自动管理Cookies的需求,在设置Cookies管理器之前,我们需要在Jmeter安装路径下bin目录中的 jmeter.properties 文件中定义属性:CookieManager.save.cookies=true。

接着,在Jmeter中设置Cookies管理器,(线程组->添加->配置元件->HTTP Cookies管理器),添加后不需要填写内容,它会自动管理cookies。

2. 获取authenticity_token

首先,设置1个HTTP请求(线程组->添加->取样器->HTTP请求),在HTTP请求下依次设置 正则表达式提取器和调试后置处理程序 。其中,正则表达式提取器用于提取authenticity_token,而调试后置处理程序,用于查看提取的结果。最后,设置如下:

在上面的设置中,我们的访问 https://github.com/login ,然后返回的HTML界面中存在2个authenticity_token,因此通过正则返回的是一个长度为2的列表,而GitHub在登录时用到的是列表中的第二个元素,因此设置参数匹配数字(0代表随机)的值为2。

3. 模拟登录

类似第二步,设置1个HTTP请求,并在HTTP请求下依次设置 正则表达式提取器和调试后置处理程序 ,这里登录的请求方式为POST,最后设置如下:

在这里,类似之前的Python文章中,添加POST登录过程中所需的参数,而authenticity_token的值,我们可以通过 ${authenticity_token} 来引用第二步骤中通过正则提取到的authenticity_token。

注意:在这里,authenticity_token需要勾选编码,如果不勾选的话,有时候可能会出现登录失败,这里我暂时还不明确具体原因,有大佬清楚的话烦请留言指导一下。

4. 断言,判断是否登录成功

接下来,在HTTP请求下设置断言来判断是否登录成功(HTTP请求->添加->取样器->HTTP请求)。GitHub登录成功后,界面的标题会显示"GitHub",而登录失败时,一般显示的标题则是"Sign in to GitHub · GitHub"。因此,我们可以设置响应断言如下:

在这里,我们对第三步骤中正则提取的 title 进行断言,当 title 变量的内容 和GitHub完全相等时,断言成功,否则失败。

5. 添加监听器

最后,为了方便查看运行后的结果,我们可以设置监听器,如图形结果、察看结果树、聚合报告等。以下是我本次设置的察看结果树(线程组->添加->监听器->察看结果树),通过它,我们可以查看线程组中各请求的具体响应过程。

OK,以上就是通过Jmeter模拟GitHub登录的过程,其实大致思路和利用Python来模拟相同,用Jmeter来模拟登录,好处就是不需要写代码也可以实践,相信大多数人阅读后都应该可以进行实践。

如有错误,欢迎指出!

利用Jmeter模拟Github登录的更多相关文章

  1. 利用Python模拟GitHub登录

    最近学习了Fiddler抓包工具的简单使用,通过抓包,我们可以抓取到HTTP请求,并对其进行分析.现在我准备尝试着结合Python来模拟GitHub登录. Fiddler抓包分析 首先,我们想要模拟一 ...

  2. 利用 cookie 模拟网站登录

    import urllib import urllib2 import cookielib filename = 'cookie.txt' \#声明一个MozillaCookieJar对象实例来保存c ...

  3. 如何利用JMeter模拟超过 5 万的并发用户

    本文将从负载测试的角度,描述了做一次流畅的5万用户并发测试需要做的事情. 你可以在本文的结尾部分看到讨论的记录. 快速的步骤概要 编写你的脚本 使用JMeter进行本地测试 BlazeMeter沙箱测 ...

  4. 利用phantomjs模拟QQ自动登录

    之前为了抓取兴趣部落里的数据,研究了下QQ自动登录. 当时搜索了一番,发现大部分方法都已经失效了,于是准备自己开搞. 第一个想到的就是参考网上已有方案的做法,梳理登陆js的实现,通过其他语言重写.考虑 ...

  5. Python3之利用Cookie模拟登录

    Python3之利用Cookie模拟登录 利用Cookie模拟登录步骤: 1.       在浏览器输入http://demo.bxcker.com,输入用户名和密码登录. 2.登录成功点" ...

  6. 忘记秘密利用python模拟登录暴力破解秘密

    忘记秘密利用python模拟登录暴力破解秘密: #encoding=utf-8 import itertools import string import requests def gen_pwd_f ...

  7. 使用ApiPost测试接口时需要先登录怎么办?利用Cookie模拟登陆!

    ApiPost简介: ApiPost是一个支持团队协作,并可直接生成文档的API调试.管理工具.它支持模拟POST.GET.PUT等常见请求,是后台接口开发者或前端.接口测试人员不可多得的工具 . 下 ...

  8. 利用Jsoup模拟跳过登录爬虫获取数据

    今天在学习爬虫的时候想着学习一下利用jsoup模拟登录.下面分为有验证码和无验证码的情况进行讨论. ---------------------------无验证码的情况---------------- ...

  9. 利用Python模拟登录pastebin.com

    任务 在https://pastebin.com网站注册一个账号,利用python实现用户的自动登录和创建paste.该任务需要分成如下两步利用python实现: 账号的自动登录 paste的自动创建 ...

随机推荐

  1. 更新EF(更新表 添加表…)

           

  2. 基于IOCP的高速文件传输代码

    //服务端: const   //transmit用的参数   TF_USE_KERNEL_APC     = $20;   //命令类型   CMD_CapScreen             =  ...

  3. WPF 用代码调用dynamic resource动态更改背景 - CSDN博客

    原文:WPF 用代码调用dynamic resource动态更改背景 - CSDN博客 一般dynamic resoource通常在XAML里调用,如下范例: <Button Click=&qu ...

  4. Win8MetroC#数字图像处理--2.2图像二值化函数

    原文:Win8MetroC#数字图像处理--2.2图像二值化函数 [函数代码] /// <summary> /// Binary process. /// </summary> ...

  5. Resolve conflict using "MERGE_HEAD (origin/HEAD)"

    Git进行同步的时候,经常会出现冲突,有时候冲突的选项会有图示中的三种选项: 1.Resolved:直接把文件标识为冲突已经解决,一般是自己手动查看并解决完冲突以后使用. 2.Resolve conf ...

  6. 中资收购美新半导体,为何能通过CFIUS审查(其实是国内公司,技术水平国内领先,和国际仍有差距)

    日前,华灿光电发布公告称,旗下子公司和谐光电收购美国美新半导体终获得CFIUS审查通过.这是中资收购豪威科技.图芯科技等公司之后,再次从美国成功收购半导体企业.而且本次中资收购美新半导体还是在特朗普上 ...

  7. Unity 3d新手上路

    作为一位unity新手,初学遇到了不少坑,而且不知道怎么找,发觉网上关于unity的文档好少,还是我暂时没找到. 现在说说void OnTriggerEnter(Collider e),这个函数是我加 ...

  8. VirtualBOX 虚拟机安装 OS X 10.9 Mavericks 及 Xcode 5,本人X220亲测(超详细截图)

    http://www.cnblogs.com/yipu/p/3611611.html http://bbs.feng.com/read-htm-tid-7625465.html OS X Maveri ...

  9. How to Capture the Integer-Divide-By-Zero Error in C++(提前定义信号)

    How to Capture the Integer-Divide-By-Zero Error in C++? MANUAL CAPTURE The simple and straightforwar ...

  10. QSqlRelationalTableModel的Select语句会改变列的名字

    不解释QSqlRelationalTableModel是什么东西.看以下代码: //3.1 创建model model = new QSqlRelationalTableModel(); model- ...