FWScript 简介

FWScripts(FunWin Scripts Language)是一个以“行”为单位的简单的解释型脚本语言,简称“方文脚本”,主要用于测试自动化执行。
作为一门面向测试的专用语言,FWScript除了具备一般语言的基本元素外,还具备如下特征:

  • 可以使用FWScript编写脚本操纵用户界面,模拟键盘与鼠标动作。
  • 利用Fwscript语句可以方便实现与测试管理框架的交互:定义执行模式与报告测试结果
  • 可以直接利用测试用例的自然语言文本,保持其层次结构,逐步将手工执行的测试步骤转化成自动执行的脚本
  • 具备“断点续执行”的功能,方便于需要重新启动系统的测试用例,尤其适合于系统测试阶段
  • 提供与治具的交互接口,方便操纵治具以及收集监测数据
  • 语言层面上支持“数据源”的概念,方便数据驱动测试
  • 使用测试模块的概念与函数的概念,便于开发实现关键字驱动测试 (ISO29119 Keyword Driven Testing)
FWScripts为解释型语言,以行为单位进行解释,每一行的第一个非空字符标志着本行所要执行的指令类别,采用不同的符号表达不同的意义。

FWScript提供两种方式编写脚本,二者可以同时混合使用:
  使用符号表达命令:如使用 {? 表示条件语句,使用 @ 表示显示一条信息。这种方式比较简洁,但需要记住
  使用关键字表达命令:如使用if 表示条件语句,使用show 表示显示一条信息。这种方式比较直观

FWScript使用大量的缩略语(alias),同一个指令可以使用多种关键字,使得编程者可以随意使用。如:input key keyinput sendkey 都表示为输入键盘字符串。
	
【除少数特殊指令外,每一行指令前面都可以使用空格或制表符,因此可以使用缩进编排脚本。】
【随着FWScript的不断演进,将来会支持中文关键字,以及利用自然语言语句来表达指令】

FWScripts脚本程序例子

### FWScript脚本程序:通过界面操作关闭“windows自动更新” 

##检查系统中是否有打开的“设置”窗口,并将所有打开的“设置”窗口关掉,以便为测试准备干净的环境,
closewindow .设置

## 打开一个设置窗口,这个命令为BizRunner预先实现的动作
opensetting

## 等待2秒,确保 "设置" 窗口已启动, 使用等于号'=',意思为“等”
=2s

##找到窗口中的“更新与安全”选项 (寻找具体的元素(Windows系统专业术语叫“控件”)
element /Window[@name = '设置'  and @classname = 'ApplicationFrameWindow' ]/?/List[@automationid = 'PageGroupsListView'  and @classname = 'GridView' ]/ListItem[@name = '更新和安全'  and @classname = 'GridViewItem' ]
	// ==》这一段很长的字符串为“控件的路径描述”,可以开发界面上通过工具自动生成。
	// 如果你能理解其含义,就可以学会进一步“微调”路径寻找方式,使得控件的寻找更稳定、快捷

## 执行Invoke动作,也就是说进入“更新与安全”,invok是针对当前找到的控件的一个动作,类似的动作还有 Click,Doubleclick等等。
invoke

## 等待1秒,确保系统进入了新的界面
=1s

## 找到“windows更新”选项
element /Window[@name = '设置'  and @classname = 'ApplicationFrameWindow' ]/?/List[@automationid = 'PagesListView'  and @classname = 'ListView' ]/ListItem[@name = 'Windows 更新'  and @classname = 'ListViewItem' ]

## 执行select动作。
select

## 等待1秒,确保系统进入了新的界面
=1s

## 找到窗口中的”高级选项“
element /Window[@name = '设置'  and @classname = 'ApplicationFrameWindow' ]/?/Group[@automationid = 'pageContent'  and @classname = 'LandmarkTarget' ]/Pane[@automationid = 'ItemsControlScrollViewer'  and @classname = 'ScrollViewer' ]/Hyperlink[@automationid = 'SystemSettings_MusUpdate_AdvancedSettingsLink_HyperlinkButton'  and @classname = 'Hyperlink' ]

## 执行Invoke动作,进入”高级选项画面
invoke

## 等待1秒,确保系统进入了新的界面
=1s

## 找到窗口中的 “自动下载更新” 的开关项 (toggle)
element /Window[@name = '设置'  and @classname = 'ApplicationFrameWindow' ]/?/Group[@automationid = 'pageContent'  and @classname = 'LandmarkTarget' ]/Pane[@automationid = 'ItemsControlScrollViewer'  and @classname = 'ScrollViewer' ]/?/Button[@automationid = 'SystemSettings_MusUpdate_AllowAutoWindowsUpdateDownloadOverMeteredNetwork_ToggleSwitch'  and @classname = 'ToggleSwitch' ]

## 显示一下当前的开关项状态
notify '当前的“自动下载更新”的选项的状态是 " + $.togglestate

## 如果当前的状态是 On,则调用动作Toggle,将它变成Off。
if ($.togglestate == "On")
toggle
endif

## 关闭“设置”窗口
closesetting
注意:如果你的系统是英文版,则需要将上述“控件路径”中的中文换成英文:设置=setting  更新和安全=update and security

当你成为了“专业人员”,上述代码也可以由如下简单的代码进行代替

 
## 使用的符号有一定的规律,当你记住后,写脚本将更快更简单
!? .设置
// !代表做个动作,?表示一种条件
opensetting
=2s
#d SETTING /Window[@name = '设置'  and @classname = 'ApplicationFrameWindow' ]
#d GROUP #SETTING/?/List[@automationid = 'PageGroupsListView'  and @classname = 'GridView' ]
:#GROUP/ListItem[@name = '更新和安全'  and @classname = 'GridViewItem' ]
!1
=1s
:#GROUP/ListItem[@name = 'Windows 更新'  and @classname = 'ListViewItem' ]
select
=1s
#d CONTROL #SETTING/?/Group[@automationid = 'pageContent'  and @classname = 'LandmarkTarget' ]/Pane[@automationid = 'ItemsControlScrollViewer'  and @classname = 'ScrollViewer' ]
:#CONTROL/Hyperlink[@automationid = 'SystemSettings_MusUpdate_AdvancedSettingsLink_HyperlinkButton'  and @classname = 'Hyperlink' ]
!1
=1s
:#CONTROL/?/Button[@automationid = 'SystemSettings_MusUpdate_AllowAutoWindowsUpdateDownloadOverMeteredNetwork_ToggleSwitch'  and @classname = 'ToggleSwitch' ]
@: '当前的“自动下载更新”的选项的状态是 " + $.togglestate
if ($.togglestate == "On")
toggle
endif
closesetting

FWScript 教程 >>FWScript 代码与注释 >>