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 代码与注释 >> |