在测试wifi的时候,测试人员一般要使用很多不同型号的AP,并且需要不断地切换Chariot的配置。

这里的思路是致力于提供一个友好的GUI界面来自动控制AP,并且自动控制Chariot进行Throughput的测试。

这里Chariot的部分就不提了,可以自行参照Chariot的c API或者tcl的API进行程序设计。

这里先给出一个实例,那就是Tplink的AP,待完善之后可以将每一个AP做成一个配置文件,方便扩展。

先祭出Qt代码吧:

#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug> Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this); manager = new QNetworkAccessManager(this);
connect(manager,SIGNAL(finished(QNetworkReply*)), this,SLOT(replyFinished(QNetworkReply*)));
} Dialog::~Dialog()
{
delete ui;
} void Dialog::replyFinished(QNetworkReply *reply) //当回复结束后
{ QByteArray reply_str; switch (reply->error()) { case QNetworkReply::AuthenticationRequiredError:
qDebug()<<"AUTH REQUIRED";
qDebug()<< reply->rawHeaderList();
qDebug()<< reply->rawHeaderPairs(); /* no break */
case QNetworkReply::NoError:
reply_str = reply->readAll();
ui->text->setPlainText(QString::fromUtf8(reply_str));
reply->deleteLater();
break;
default:
qDebug()<<"ERROR WHEN REPLY:" << reply->error(); } } void Dialog::on_init_clicked()
{
manager->get(QNetworkRequest(QUrl("http://192.168.2.1")));
} /*
Authorization: Basic YWRtaW46YWRtaW4=
Accept: text/html
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
*/ void Dialog::on_start_clicked()
{
QString get_str = "http://192.168.2.1/userRpm/WlanNetworkRpm.htm?ssid1=haha&wlMode=2&channel=3&mode=5 \
&chanWidth=2&ap=1&broadcast=2&brlssid=&brlbssid= \
&keytype=1&wepindex=1&authtype=1&keytext=&Save=%B1%A3+%B4%E6 HTTP/1.1";
QUrl url(get_str);
QNetworkRequest req;
req.setUrl(url);
req.setRawHeader("Authorization", "Basic YWRtaW46YWRtaW4=");
manager->get(req); }

这里在界面上放置了一个PlaintextEdit和两个按钮,上述的两个函数分别对应每一个按钮的点击事件。

Qt提供了访问HTTP很简单的方式,使用它的API能够轻松地实现HTTP数据的交互。

可以看到一开始初始化了一个QNetworkAccessManager,当数据到达客户端的时候replyFinished函数就会被呼叫。

在这个函数里面,我判断了三种情况,其中比较特殊的就是AuthenticationRequiredError的事件。

当打开Tplink路由器的时候,路由器就会弹出一个需要认证的界面从而触发这个事件。实际上从HTTP交互的header可以看出来。

TPLINK740N使用的是HTTP摘要认证,可以看看此博客了解详情:

点击打开链接

当点击按钮触发on_init_clicked的时候,就会最终触发AuthenticationRequiredError的事件,因为

没有给AP提供密码。接下来的每次交互中都需要给AP提供密码来保证访问的成功:

    req.setRawHeader("Authorization", "Basic YWRtaW46YWRtaW4=");

其中YWRtaW46YWRtaW4=是从admin:admin产生的,欲知详情可以打开上面提供的链接。

实际上,HTTP头部有很多字段,这里只使用了最重要的一个,其他的Qt会自动帮我们加的(好方便!)

当点击按钮触发on_start_clicked的时候,就可以成功设置AP了,上面设置的效果如下:

聪明的你很容易修改这个字符串来达到你想要的效果:

    QString get_str = "http://192.168.2.1/userRpm/WlanNetworkRpm.htm?ssid1=haha&wlMode=2&channel=3&mode=5 \
&chanWidth=2&ap=1&broadcast=2&brlssid=&brlbssid= \
&keytype=1&wepindex=1&authtype=1&keytext=&Save=%B1%A3+%B4%E6 HTTP/1.1";

最终可以给每一个AP提供一个配置文件,因为上层可以做到一致(SSID、channel等设置),所以很容易实现自动化

另外,从AuthenticationRequiredError给出的信息里面(rawHeaderPairs)可以判断AP的型号

WiFi QC 自动测试:Qt控制无线路由器的更多相关文章

  1. WiFi QC 自动测试:ixChariot API初探

    Chariot虽然给我们提供了友好的界面,但是必须使用命令行或者使用它的API才能 实现自动测试.Chariot在安装的时候会让你选择命令行界面组件,在它的安装目录下面有一些工具, 暂时还不知道是干什 ...

  2. 用Selenium自动化测试时,让ChromeDriver中不显示“正受到自动测试软件控制”

    背景: 在用Selenium做自动化测试的时候,默认ChromeDriver是会提示“Chrom正受到自动测试软件控制”的.如下图这样.但我们有些场景下,不希望这个提示出现.本文探索了几种语言去掉这个 ...

  3. chrome正受到自动测试软件的控制-----web自动化测试如何去掉这段提示

    本文为原创文章 在web自动化测试的时候,特别是在用chrome浏览器的时候经常会出现 “chrome正受到自动测试软件的控制”  这样的一句提示, 这是因为安装chrome浏览器的时候没有设置允许调 ...

  4. selenium自动化测试时,chrome 出现“Chrome 正受到自动测试软件的控制”的解决办法

    背景 使用selenium自动化测试的时候,启动浏览器出现'Chrome正在受到自动软件的控制'的问题,修改方法有两种. 一.在浏览器配置里加个参数,忽略掉这个警告提示语:disable_infoba ...

  5. [转载]WiFi有死角? 巧用旧无线路由器扩展覆盖

    怎么了,家里的WiFi有死角?老旧无线路由器的无线覆盖不给力?现在大功率无线产品或双频无线产品的售价并不便宜,而且仅靠一台无线路由器并不能满足多户型家庭的无线覆盖需求.那么,是不是有什么廉价而又实用的 ...

  6. 深圳电信光纤用户必备:简单破解中兴ZXA10 F460光电猫,实现WIFI和自动拨号功能

    最近搬家,ADSL转成光纤宽带,下载速度非常给力.原来的ADSL路由器派不上用场,电信的安装人员也给开通了wifi功能,只是wifi无法上网,而且拨号一定需要用电脑连网线进行拨号.以前是直接把拨号账户 ...

  7. Nightwatch.js – 轻松实现浏览器的自动测试

    Nightwatch.js 是一个易于使用的,基于 Node.js 平台的浏览器自动化测试解决方案.它使用强大的 Selenium WebDriver API 来在 DOM 元素上执行命令和断言. 语 ...

  8. Qt 控制watchdog app hacking

    /************************************************************************** * Qt 控制watchdog app hack ...

  9. Apache JMeter--网站自动测试与性能测评

    Apache JMeter--网站自动测试与性能测评 2013-02-28 15:48:05 标签:Jmeter From:http://bdql.iteye.com/blog/291987 出于学习 ...

随机推荐

  1. Effective Java 55 Optimize judiciously

    Principle Strive to write good programs rather than fast ones. Strive to avoid design decisions that ...

  2. EasyUI ComboGrid 分页

    一.使用场景 下拉框可以很方便地为我们提供选择功能,通过下拉框我们可以便捷地选择某个值,而不需要手动输入.在EasyUI中有ComboGrid与之对应.ComboGrid既可以当中下拉框来使用,又可以 ...

  3. CListCtrl

    CListCtrl CCmdTarget     └CListCtrl CListCtrl类封装"列表视图控件"功能,显示每个包含图标(列表视图中)和标签的收集.除图标和标签外,每 ...

  4. 标准IO的缓冲问题

    在看APU时,第8章进程时, #include <stdio.h> #include <unistd.h> ; char buf[] = "a write to st ...

  5. [转]PhoneGap使用PushPlugin插件实现消息推送

    本文转自:http://my.oschina.net/u/1270482/blog/217661 http://devgirl.org/2013/07/17/tutorial-implement-pu ...

  6. [转].NET下读取PDF文本

    本文转自:http://blog.csdn.net/wangqiuyun/article/details/8548779 在.NET下读取PDF文本用到的类库主要有两个:PDFBox和iTextSha ...

  7. css中table tr:nth-child(even)改变tr背景颜色: IE7,8无效

    例如: .my_table tr:nth-child(even){ background:#E6EDF5; } .my_table tr:nth-child(odd){ background:#F0F ...

  8. 当文本溢出包含的元素时加省略号之text-overflow

    text-overflow是css3的属性,用来处理文本溢出,默认裁剪处理,text-overflow属性只能用于block和inline-block元素,内联的和box,flex-flow:colu ...

  9. Centos7下修改默认网卡名(改为eth0)的操作记录

    安装好centos7版本的系统后,发现默认的网卡名字有点怪,为了便于管理,可以手动修改.下面对centos7版本下网卡重命名操作做一记录:1)编辑网卡信息[root@linux-node2~]# cd ...

  10. FormsAuthentication详解

    配置安全鉴别 鉴别是指鉴定来访用户是否合法的过程.ASP.NET Framework支持三种鉴别类型: Windows鉴别: NET Passport鉴别: Forms鉴别. 对于某一特定的应用程序, ...