为框架初学者准备的RobotLegs
RobotFramework自动化测试框架入门(三):基础关键字

RobotFramework⾃动化测试框架⼊门(三):基础关键字⼀、定义变量定义:在第⼀列⽤${变量名}创建⼀个变量,在第⼆列⽤Set variable设置变量(Set Global /Suite/Test Variable分别代表变量的可⽤范围是所有测试套件/当前测试套件/当前测试⽤例中有效),在第三⾏输⼊变量的值①获取指定变量的值可以通过下标来获取变量指定两个下标之间的字符,下图打印结果为"n"②截取⼀段的变量值,下图打印结果为"fa",右侧的"2"为开区间,取不到③通过命令⾏赋值※打印变量时⽤log,打印列表⽤log many⼆、定义列表/数组定义:列表/数组的关键字为@{数组名}(也可以⽤${数组名}代替),数组基零~length-1,通过create list赋值①⼀维数组,直接⽤②多维数组多维数组可以容纳多个数组,但是此时⼦数组应该转换为变量,然后通过create list的⽅式将数组赋给⼆维数组注意,在选取指定元素时应该⽤@{z[⼦列表下标]}[选取元素在⼦列表的下标]三、字符串连接第⼀列定义变量,第⼆列输⼊关键字Catenate,后续输⼊想连接的单个字符串,连接相当于两步动作,⼀是连接三个词,⼆是将连接后的词赋值给${abc}四、时间类关键字主要是gettime关键字⽤于获取时间并赋给变量,然后是sleep,输⼊时间(单位为秒)后执⾏休眠操作输出结果:五、分⽀语句通过robotframework来实现if分⽀语句,关键字是run keywork if,随后输⼊判断语句,还可以通过ELSE IF+判断语句和ELSE来继续判断,注意点:此时在分⽀判断前要加英⽂半⾓符号...,同时分⽀语句的格式为⼤写输出结果:六、循环语句定义:通过:FOR关键字进⼊循环,⽤IN RANGE+参数限定循环次数,注意在循环完成后没有关键字与for同⼀等级,应该空⼀格然后开始打印输出结果:也通过改变in range后的参数来实现不同的循环⽅式①限定上下限,下图打印结果为5,6,7,8,9②限定步长,下图打印结果为1,4,7③步长默认为+1,可以为负值,通过设置负值实现递减的循环七、通过Evaluate调⽤python中的⽅法添加Evaluate关键字,后⾯引⼊Python的模块和具体的⽅法在这⾥就是通过Evaluate关键字引⼊Python中的random模块,然后调⽤具体的整形随机数⽅法random.randint()⽅法⽣成⼀个1到1000的随机数字然后复制给${d}运⾏结果:⼋、关键字传参在关键字中需要传参,⽽参数是变量类型还是列表类型需要根据关键字的定义来看上图中log many需要传参为[*messages],参数栏中带*的为列表类型,不带*为变量类型九、在Python3中⽆法使⽤ride的解决⽅法Python⽆法使⽤ride,我们可以通过编写Python脚本然后通过命令⾏执⾏对应的测试⽤例即可⼗、变量/列表转换①list变量转换成Scalar变量:当⼀些关键字只接收Scalar变量时,我们可以把List变量转成Scalar变量使⽤可以在赋值List后直接打印为Scalar变量②Scalar变量转换为list变量可以直接⽤Scalar变量当作list变量定义并赋值。
Robotium自动化测试框架实用教程(图)

Robotium⾃动化测试框架实⽤教程(图)⼀、简介Robotium是⼀款国外的Android⾃动化测试框架,主要针对Android平台的应⽤进⾏⿊盒⾃动化测试,它提供了模拟各种⼿势操作(点击、长按、滑动等)、查找和断⾔机制的API,能够对各种控件进⾏操作。
Robotium结合Android官⽅提供的测试框架达到对应⽤程序进⾏⾃动化的测试。
另外,Robotium 4.0版本已经⽀持对WebView的操作。
Robotium 对Activity,Dialog,Toast,Menu 都是⽀持的。
⼆、相关下载源码获取:/p/robotium/源API⽂档:/svn/doc/index.htmlrobotium5.1下载和最新API⽂档:/s/1bnlO8MF官⽅例⼦记事本:/s/1qWLVL72重签名⼯具:/s/1i3H0tKD三、常⽤语法1.等待timeout毫秒⼀个名字为name的Activity启动: waitForActivity(String name, int timeout)实例:assertTrue("⽆法启动启动类", solo.waitForActivity ("MainActivity", 30000));2.Robotium将睡眠设置的毫秒数:sleep(int time)实例:solo.sleep(5000)3.清空EditText的内容:clearEditText(android.widget.EditText editText)实例:solo.clearEditText((EditText)solo.getView ("edtInsertName"))4.根据按钮上的⽂字点击按钮:clickOnButton(String text)实例:solo.clickOnButton("^绿⾊$");5.根据⽂字点击控件:clickOnText(String text)实例:solo.clickOnText("控件上显⽰⽂字");6.输⼊内容:enterText(android.widget.EditText editText, String text)solo.enterText((EditText)solo.getView("edtInsertName"), "说些什么好呢?");7.返回:goBack()8.截屏并保存为设置的名字:takeScreenshot(String name)默认保存在: /sdcard/Robotium-Screenshots/9.解锁屏幕:unlockScreen()四、实战-针对APK进⾏的测试被测试项⽬为,下⾯是实战的具体步骤1. 配置ANDROID_HOM E为android sdk的安卓⽬录,例如:D:\android-sdk2. 在path下添加这两个:%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;3. 需要把APK重新签名,因为robotium要求被测应⽤和测试代码要有⼀致的签名, 所以我们需要把下载到的apk,通过re-sign.jar来产⽣debug key的apk,这个重新⽣成的apk就会跟测试项⽬签名⼀致了4. 下载完后,需要配置ANDROID_HOME,就是安卓SDK的位置,然后把APK拉到图标上,就会⾃动⽣成⼀个debug key的apk,如果⽆法直接单击re-sign.jar运⾏,需要切换到放置该jar⽂件的⽬录,cmd执⾏java -jar re-sign.jar产⽣新apk的过程中会弹出⼀个信息框,记得截下图,因为⾥⾯有两个信息我们等会的代码中需要⽤到5. 安装产⽣的apk。
robot framework使用方法

robot framework使用方法Robot Framework使用方法1. 简介Robot Framework是一个开源的自动化测试框架,使用关键字驱动的方法编写测试用例。
它具有简单易学、灵活可扩展和跨平台等特点,被广泛用于软件测试领域。
2. 安装要开始使用Robot Framework,首先需要进行安装。
以下是安装的步骤:1.安装Python:Robot Framework是基于Python开发的,所以需要先安装Python解释器。
2.安装Robot Framework:可以通过pip命令安装RobotFramework,命令为pip install robotframework。
3. 编写测试用例在Robot Framework中,测试用例是通过关键字驱动的方式编写的。
以下是编写测试用例的基本步骤:1.创建测试套件:使用*** Test Cases ***关键字定义一个测试套件,可以包含多个测试用例。
2.添加测试用例:在测试套件中,使用*** Test Case ***关键字定义一个测试用例,然后在下一行写下测试用例的名称。
3.编写关键字:在测试用例中,使用关键字执行不同的操作或断言。
可以使用内置的关键字,也可以自定义关键字。
4.设置变量:使用*** Variables ***关键字定义变量,可以在测试用例中使用这些变量。
4. 运行测试编写完测试用例后,可以通过以下步骤来运行测试:1.在终端中切换到测试套件所在的目录。
2.运行测试套件:使用robot命令,后面跟上测试套件的文件名。
例如,robot。
3.查看测试结果:测试运行完成后,会在终端中显示测试结果摘要,包括测试通过的用例数、失败的用例数等信息。
5. 关键字库关键字库是Robot Framework的一个重要概念,它包含了一组关键字的实现。
可以通过以下方法来使用关键字库:1.导入关键字库:使用Library关键字导入关键字库。
例如,Library ExampleLibrary。
RobotFramework自动化框架搭建的步骤

RobotFramework⾃动化框架搭建的步骤Robot Framework⾃动化测试框架+ 可视化编辑⼯具RIDE+Selenium2这是规范的webAPI.⼀、安装的软件有(下⾯的是我选⽤的软件版本):1.python软件:python-2.7.3.msi (这⾥最好选择python 2X版本的软件)2.pywin32-217.win32-py2.7.exe3.robotframework-2.8.54.wxPython2.8-win32-unicode-2.8.12.1-py27.exe5.robotframework-ride-1.1.win32.exe 或者 robotframework-ride-1.5.2.1.tar.gz(在命令窗⼝安装 D> cd D:\⼯作\python\robotframework-ride-1.5.2.1>python setup.py install)注意:ride与wxpython⼀定要相匹配1)安装.python软件:python-2.7.3.msi (这⾥最好选择python 2X版本的软件)2)安装Wxpython,RIDE是基于这个GUI库开发的。
下载地址:或者是:(2.8.12.1的 unicode(⽀持中⽂版)选择默认安装即可。
注意:选择与 Python 版本对应的版本,并且选择 unicode 版本,⽐如版本:wxPython2.8-win32-unicode-py26.exe,否则安装完成后不能⽀持中⽂。
3)安装Robot framework-ride,这个是RIDE可视化编辑⼯具。
下载地址:或者官⽹下载:4)安装Robot framework-selenium2library,这个提供⼀套规范的WEB的API,通过这些API进⾏页⾯的定位与操作。
下载地址:5)安装浏览器驱动。
IE 浏览器或 Chrome 浏览器,需要下载浏览器驱动。
RobotFramework快速入门指南

RobotFramework快速入门指南RobotFramework快速入门指南1、简介RobotFramework是一个开源的Python框架,用于自动化测试和自动化任务的执行。
它提供了可扩展的关键字库和易于使用的语法,能够帮助用户快速构建自动化测试用例。
2、安装2.1 环境准备:在安装RobotFramework之前,需要确保已经安装了Python和PIP工具。
2.2 安装RobotFramework:使用PIP工具执行以下命令进行安装:`pip install robotframework`3、创建测试用例3.1 创建测试套件:测试用例通常组织在测试套件中,可以使用任意的目录结构进行组织。
3.2 添加测试用例:在测试套件中,可以创建多个测试用例,在测试用例中编写测试步骤和关键字调用。
4、编写关键字库4.1 创建关键字库:关键字库是存放关键字实现的代码文件,可以是Python、Java或者其他支持的编程语言。
4.2 模块导入:在关键字库中,可以导入其他Python模块来实现关键字的功能。
4.3 定义关键字:编写关键字的具体实现,可以调用其他关键字和库函数。
5、运行测试用例5.1 执行测试用例:使用RobotFramework的命令行工具来执行测试用例,命令为`robot <test_suite_file>`。
5.2 查看测试结果:执行完成后,RobotFramework会或者XML格式的测试报告,可以在浏览器中查看。
6、测试数据管理6.1 使用变量:在测试用例中可以使用变量来存储和传递数据。
6.2 导入数据文件:可以将测试数据存放在外部文件中,使用`Import`关键字导入测试数据。
7、测试用例扩展8、操作Web应用8.1 使用Selenium2Library:Selenium2Library是RobotFramework的一个扩展库,用于操作Web应用。
8.2 安装Selenium2Library:使用PIP工具执行以下命令进行安装:`pip install robotframework-selenium2library`附件:无法律名词及注释:1、RobotFramework:RobotFramework是由Pekka Klärck和他的团队开发的自动化测试框架,其源代码遵循Apache许可证。
RobotFramework入门

RobotFramework⼊门1、输出内容 log:跟python中的print⼀样2、定义变量 通过Set variable关键字来定义,⽤${变量名}来接收3、连接对象 Catenate关键字,可以连接多个信息4、连接分隔符 SEPARATOR=分隔符;可以对多个连接信息分隔,分隔符不需要双引号5、定义列表 Create list关键字可以定义列表6、打印列表内容 ⽤@{变量}去接收列表内容,然后⽤log many @{变量}关键字去打印7、获取当前时间 get time关键字来获取当前时间8、休眠 sleep关键字来设置休眠时间9、if语句 通过“run keyword if”关键字可以编写if分⽀语句,注意 sele if 和 else 前⾯的三个点点点(...)10、for循环 通过“:for”定义 for 循环;in range⽤于指定循环的范围,如果是列表,则⽤in,跟python⼀样11、for循环中的判断 通过“Exit For Loop If”关键字时⾏ for 循环内的判断,当满⾜ Exit For Loop If 条件后,循环结束12、Evaluate 改关键字可以调⽤python中的⽅法 13、导⼊库 import library关键字来进⾏14、注释 可以⽤#注释,也可以⽤Comment关键字15、截图 screenshot库提供了⼀个take screenshot关键字可以截图,但要在测试套件中⼿动加载16、Collections库 所提供的的关键字可以⽤于列表、元组、字典、索引的处理,也要在测试套件中⼿动加载17、创建字典 Create Dictionary关键字可以⽤于字典的创建 Get Dictinoary Items关键字可⽤于获取字典的key和value Get Dictionary Keys关键字可以⽤于字典中key值的获取 Get Dictionary Vaules关键字可以⽤于字典中value值的获取 Get From Dictionary关键字可⽤于获取字典中key对应的value18、Edit标签 测试项⽬和测试套件都有Edit标签,功能也是⼀样 主要部分: (1)加载外部⽂件 Add Library:加载测试库,⼀般都是python中site-packages⾥的测试库 Add Resource:加载资源,主要是⼯程相关的资源⽂件 Add Variables:加载变量⽂件 (2)定义内部⽂件 Add Scalar:定义变量 Add List:定义列表型变量 (3)定义元数据 Add Metadata:定义元数据19、关键字 open browser:打开浏览器 close browser:关闭浏览器 close all browser:关闭所有浏览器 maximize browser window:最⼤化 get window size:设置窗⼝的宽和⾼ input text:⽂本输⼊ click element:点击元素 click button:点击按钮 wait until page contains element:等待元素出现 get title:获取title get text:获取text get element attribute:获取元素属性 cookie处理跟python的⼀模⼀样20、表单嵌套 select frame:进⼊嵌套表单 unselect frame:退出嵌套表单21、下拉框选择 unselect from list by value关键字⽤来选择下拉框。
Robotlegs最佳实践(中文版)

1.Robotlegs 是什么2.依赖注入3.使用Injectorso SwiftSuspenders 适配器注入语法o Injector 类的映射注入o MediatorMap 类的依赖注入o CommandMap 类的依赖注入4.The Context5.MVCS参考实现1.Context2.Controller & Commands3.View & Mediators4.Model, Service and the Actor5.Model6.Service7.框架事件mandsmand 职责2.触发Command3.链接Command4.应用程序层的解耦9.Mediators1.Mediator 职责2.映射一个Mediator3.View Component 的自动中介4.View Component 的手动中介5.映射主程序(contextView) Mediator6.访问一个Mediator 的View Component7.给一个Mediator 添加事件监听8.监听框架事件9.广播框架事件10.监听View Component 事件11.通过Mediator 访问Model 和Service12.访问其它Mediator10.M odels1.Model 职责2.映射一个Model3.从一个Model里广播事件4.在一个Model 里监听框架事件11.S ervices1.Service 职责2.映射一个Service3.在一个Service 里监听框架事件4.广播框架事件5.Service 示例▪Services 应该实现一个接口▪在一个Service 里解析数据▪Service 事件Robotlegs 是什么Robotlegs 是一个用来开发Flash, Flex, 和AIR 应用的纯AS3 微架构(框架). Robotlegs 专注于将应用程序各层排布在一起并提供它们相互通讯的机制. Robotlegs 试图通过提供一种解决常见开发问题的经过时间检验的架构解决方案来加速开发. Robotlegs 无意锁定你到框架, 你的类就是你的类的样子, 而且应该很容易地切换到其他框架.框架提供一个基于Model-View-Controller元设计模式的默认实现. 这个实现提供一个针对应用程序结构和设计的强烈建议. 虽然它确实轻微减低了你的应用程序的便携性, 不过它依然以最低限度影响你的具体类为目标. 通过扩展MVCS实现类, 你可以获得很多有用的方法和属性.你不必使用Robotlegs的标准MVCS实现.你可以使用它的任意部分, 或者完全不使用它, 或者使用自己的实现来适应你的需求. 它是为了提供合适的参考实现和快速开始使用Robotlegs 而被包含进来。
ROBOT操作入门

ROBOT操作入门ROBOT操作入门简介ROBOT是一种自动化测试框架,可以帮助开发人员执行各种自动化任务。
它使用简单且易于理解的DSL(Domn-Specific Language)来描述测试用例的步骤和预期结果。
本文档将介绍ROBOT的基本概念和操作入门,帮助读者快速上手。
安装和配置在开始使用ROBOT之前,您需要先安装ROBOT框架。
ROBOT支持Windows、Linux和Mac操作系统,可以从官方网站()上安装包,并按照官方文档的指导进行安装。
安装完成后,您需要配置ROBOT的环境变量。
在Windows系统中,您可以将ROBOT的安装路径添加到系统的PATH变量中。
在Linux和Mac系统中,您可以将ROBOT的安装路径添加到.bashrc或者.profile文件中。
配置完成后,您可以在命令行中输入`robot --version`命令来验证ROBOT是否成功安装。
编写测试用例ROBOT使用.robot文件来编写测试用例。
每个.robot文件由多个测试用例组成,每个测试用例由关键字和参数组成。
下面是一个简单的测试用例示例:markdownTest Cases按钮[Documentation] 测试按钮功能[Tags] Regression输入用户名 admin输入密码 56登录按钮验证登录成功在上述示例中,` Test Cases `表示测试用例的开始,`按钮`表示这个测试用例的名称。
接下来是测试用例的详细步骤,每行一个关键字和参数。
可以看到,ROBOT的DSL语法非常简洁,易于理解和编写。
您可以根据实际需求,自定义关键字并在测试用例中调用。
运行测试用例编写完测试用例后,您可以使用ROBOT来运行这些测试用例。
在命令行中输入以下命令即可:robot path/to/testcase.robot其中,`path/to/testcase.robot`是您编写的测试用例文件的路径。
ROBOT会自动解析并执行这些测试用例,并测试报告。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为框架初学者准备的RobotLegsflash, injector, robotlegs本帖最后由chocoZero 于 2010-6-10 20:15 编辑最近我试验了很多微架构框架。
作为一个框架新手,我觉得把过程中的想法分享出来对大家都是有好处的。
上次,我对付了Mate。
这次,我在玩Robotlegs了。
首先我想表示对Joel Hooks的感谢,我是在360|Flex认识他的,他当时正在进行RobotLegs 培训的演示。
那时我还不完全懂他说的东西,一直到后来亲身体验才明白,Joel在过程中给了很大的帮助和支持,从解决我打开RobotLegs网站不畅的问题到回答我不时的提问等等。
从RobotLegs开始你要做的第一件事就是到去下载最新版本。
你会得到一个zip文档,其中包括了RobotLegs的源代码,它的api文档,还有两个swc,一个在bin文件夹,另一个在libs文件夹。
在bin文件夹下的就是RobotLegs框架,而在libs文件夹下的那个同样重要。
swc是SwiftSuspenders,用来提供Robotlegs默认使用的injector。
稍后解释所谓的默认injector。
现在,你主要需要知道的是要使用RobotLegs,就要把这些swc都放在你的Flex项目的libs文件夹下。
就算提供了RL的源代码,使用swc也是重要的,因为它所做的就是确定框架使用的元数据编译进你的代码而不是丢弃它,这也是编译器默认要做的事情。
RobotLegs里的Context对于我来说,在RL里需要明白的最重要的概念是Context是什么以及它做什么。
Context Class 是把所有其他元素粘在一起的某种“胶水”。
它实例化了一个EventDispatcher,就是所有默认的MVCS接口里的类都有用到的那个。
什么是默认的MVCS应用?很高兴你问这个问题。
RobotLegs定义了几乎接口方面的所有东西,也就是说RobotLegs里用的类可以用其他能实现相同接口的类替代。
所以,理论上,你可以创建完全不同的RobotLegs应用。
默认的RobotLegs注射器把我带回到SwiftSuspenders。
事实上,它确实是默认的IInjector,因为RobotLegs完全没有定义一个injector类。
你可以使用其他的loC框架,好像SmartyPants(不过你可能需要写些adapter代码来使它生效)SwiftSuspenders是写来专门支持RobotLegs的,当你使用它作为你的IContext类的时候,Context类将为你创建一个SwiftSuspenders Injector。
这个Injector无疑储存在名为injector的保护属性里,你可以在继承Context类的时候使用。
Injector是干嘛的?我说过,使用swc有助于确保Flex/Flash Builder编译器能留住RobotLegs和SwiftSuspenders需要的元数据。
当你在声明之前增加了[Inject]的元数据标签,而RobotLegs 和那个类也有互动的话,Injector会检查它的“小黑皮书”看有没有声明所需要的任何类型的对象,之后该对象会被注入,通常是作为一个变量值的形式。
如果没有那个类型的对象存在,它会做一个出来。
就算你对Injector什么都不做,Context也会在它的“黑皮书”里为你增加一些项目,比如它做的EventDispatcher和对Injector自身的引用。
认识到整个规划很重要,某种程度上你不会不小心干扰到它们。
你也可以以默认MVCS类接口利用他们,就像Actor和Mediator的关系。
RobotLegs有两种途径和类实例互动以注入值首先,它可以通过多种方式创建实例。
例如,如果你写了injector.mapSingleton(YourClass),然后这个injector需要把一个“YourClass”作为一个属性注射进其他类里,它将会创建一个YourClass。
如果YourClass有任何[inject]标签,当新YourClass创建出来的时候将被填充。
第二个方式是Context的构造函数采用了DisplayObjectContainer的一个参数,它将定义Context是谁的Context。
Context为ADDED_TO_STAGE的事件增加了事件监听器,所以当新的视图组件被加进来的时候,Context将检查图纸以确定是否需要做些什么。
你可能会说:“ADDED_TO_STAGE又不会出声,那怎么可能?”实际上你可以设置useCapture标示为真,并监听这个“正在途中”的事件,就像从前一样。
尽管如此,主要还是要记住Context将会因任何DisplayObjectContainer的子或孙的增加而标记。
在这一点上,它既可以注入到新建的对象,也可以创建一个过渡对象来进行注入。
这里将给你RobotLegs里数据如何移动的粗略概念,其实更多的是程序如何工作的概念。
在RobotLegs里启动Context设置了一个命令路线图(CommandMap),也就是说,“当Context的EventDispatcher发送了一个事件X,就创建命令Y的一个实例并执行它的execute()方法。
”什么是Command?一个Command基本上就是一个用来执行一套命令来完成单独目标的短期对象。
这个command将接收任何它需要的对象/信息来用和RobotLegs实例化时一样的方式执行那些命令——被Injector注射。
这包括了对Context里eventDispatcher和injector属性的引用。
使用RobotLegs让我认识到自己曾有严重的偏见,认为类是某个东西。
这样想的后果就是,它可能也做事,其实它的主要目标是“成为什么”,而不是“要去做什么”。
一旦我把偏见摆一边,我完全爱上了命令模式和命令图。
它代码化你选择发送的每一个事件内容,允许使用很有可读性的代码(下载不可用)。
我通常会注释代码,但我在新的适应RobotLegs例子的代码里却几乎没有注释。
注释不再必要,因为Command的名字(例如GetTaxonomyRoot,AttachChildrenToModel)清楚的说明了当给定事件触发时会发生什么。
对于我来说,最难的部分是认出切入点(哪个事件插入进程中然后哪个Command应该先执行)。
幸运的是,我还有在360|Flex训练时的文件,我用了Joel在他的Context里相同的事件(ContextEvent.STARTUP),经过小的试验我找出了我的哪一个Command先用才对。
一个Command可以做什么?一般的,Command有途径接触到Context的commandMap,Context联结的DisplayObjectContainer,EventDispatcher,injector和我还没提过的Context的另一个属性mediatorMap。
这就是说它们可以加其他的Commands进CommandMap里,增加监听器进DisplayObjectContainer,发送事件到框架,为injector规划更多类。
而且,它们也有途径让你通过使用[Inject] 元数据选择其他信息给它们。
这就帮你扩展了更多的可能性。
有一类数据注入Command比较困难——如果不是不可能的话——那就是加载到Context 使用的显示列表的对象。
我们已经知道我们可以在视图组件首次加载到舞台上时注入数据,但是如果我们在程序状态变化时改变它的显示,或者想在用户和视图发生交互时在程序里标记下来呢?用Mediator和视图通讯RobotLegs有个东西叫做Mediator,但是我想叫它Supervising Presenter更合适些。
简而言之,对于你想钓进RobotLegs里的每一个视图类,推荐你创建具有多种反应能力的Mediator。
•监听由Context的EventDispatcher发送的影响视图的事件。
•基于那些事件来更新视图的状态/数据。
•监听来自用户的对视图状态/数据的改变。
•使用Context的EventDispatcher来发送关于以上改变的信息。
这就允许了你的视图和程序同步,而且节省了对数据绑定的需求。
你可以通过使用Context的mediatorMap把一个视图媒介化。
当mediatorMap里的一个视图被添加到舞台上时,RobotLegs将会自动为你的特定类创建一个Mediator。
不同于把数据注射进视图,为了媒介化视图,RobotLegs把刚添加进舞台的视图的引用注射进Mediator。
既然Mediator有一个对视图的直接引用,它可以使用它的公共API并监听它产生的事件。
你通常在例如叫做onRegister()的Mediator的一个方法里设置所有这些东西,它们将会在注射发生时调用,也包括对视图的引用。
像Command类一样,Mediator类注入了来自Context的引用,包括EventDispatcher 和mediatorMap。
这就允许Mediator设置视图为媒介并监听任何钓进Context的实例。
通常,视图在一整套数据里是无法工作的,不过只是编辑一部分倒是可以的,所以让更大的模型知道有东西发生变化就变得重要了。
我们已经知道如何在一个数据类被RobotLegs创建时注入数据,但是我们如何改变数据以及如何让它内部的数据通讯发生改变呢,比如从服务器过来的新信息?用数据类进行通讯现在,你可能开始猜到RobotLegs的团队已经为你设置了一个类,这个类已经设置好可自动注入独立性用于与Context里的任何东西发生交互。
RobotLegs的默认执行表明你扩展了模型和服务器对象的actor。
Actor是其他具有接收诸如Context的EventDispatcher 的钩的另一个简单类。
我不是对使用Actor很兴奋,因为在我和Mate的实验中已经有了数据类来设置用于接收一个EventDispatcher作为构造函数参数。
我花了些时间寻找关于如何启用构造函数注入的文档,但是就只发现在我的类定义前使用[inject]标签这一手段。
我对于必须改变我的核心类定义来配合特定框架工作的模式很不爽,因为这个改变必须把我的数据类包装进Actor里,而这是一种痛苦。
总结RobotLegs 我认为RobotLegs可爱的地方有很多。
一旦我发现有适合使用RobotLegs的东东,很快就可以通过调整我的Mate代码配合使用RobotLegs来节约大概一个半钟的时间。
我喜欢它不需要绑定,而且几乎主动阻止它。
我认为这让解决方案有很好的可量性。
我也被一个支持As3信号的扩展迷住了,因为我对于良好的实践知道得越多,对Flash事件的好感就越少。