您的位置:首页 > 其它

selenium对flex程序的自动化测试

2015-03-25 10:19 316 查看
因为公司的项目需要导入selenium对flex程序进行测试,我研究了一段时间稍有成就,因为在研究过程中发现selenium对flex的应用资料比较少,当然在这里也学到一些东西。所以研究后就把我学到的拿来与大家探讨一下。

下面的内容要基于大家对selenium有一定了解。

好,开始了。

1) 当然是下载Selenium RC,我用的是0.9.2

http://seleniumhq.org/download/previous.html

2) 需要下载swc文件,把自己flex工程重新编译发布。

SeleniumFlexAPI.swc

http://sourceforge.net/projects/seleniumflexapi/

sfapi.swc:

http://code.google.com/p/sfapi/downloads/list

上面这个下再好后,除了swc文件外,还有一个user-extensions.js

这个等一下说,先知道有这么个文件就可以了

3) 编译flex工程

3.1)我是用eclipse,所以在eclipse里面选中工程,属性里面选择flex build pass

在library里面加入那两个swc文件

3.2)在flex compile里面一个追加参数里面(-locale en_UA后面)追加下面的东西

-include-libraries "../TBTFlex/lib/SeleniumFlexAPI.swc" "../TBTFlex/lib/sfapi.swc"

PS:第二,三步这两个文件是否都需要,我不是太清楚,反正两个都加没错。

4) 接下来是测试工程

这个必须要先看过selenium的相关知识。

4.1)Eclipse里面建一个工程,加入selenium-java-client-driver.jar

selenium rc0.9.2中有的

4.2)下载对flex支持的jar包,加入到工程中

flash-selenium.jar :

http://code.google.com/p/flash-selenium/downloads/detail?name=flash-selenium.jar&can=2&q=

flex-ui-selenium-0.1.1.jar

http://code.google.com/p/flex-ui-selenium/downloads/detail?name=flex-ui-selenium-0.1.1.jar&can=2&q=

4.3)加入junit包,这个是必需的。。。我用的就是eclipse自带的3.8

5) 接下来介绍测试程序

public void setUp() throws Exception {

String url = "http://172.16.173.100/";

selenium = new DefaultSelenium("localhost", 4444, "*iexplore", url);

selenium.start();

}

public void tearDown() throws Exception {

selenium.stop();

}

以上的也是selenium的知识,也没什么好说的

public void test_BugMngRgst_init1() throws Throwable {

//flex应用的login画面url,这个是jsp所以可以用selenium方法

selenium.open("http://172.16.173.100/TBTLogin/");

//输入用户名

selenium.type("userid", "user");

//输入密码

selenium.type("password", "pass");

//按登陆按钮

selenium.click("button1");

//这里因为登陆后是flex程序了所以用了thread等待,否则画面没出来,后面无法操作

Thread.sleep(3000);

//这里是得到flex画面对象,Main是嵌入jsp中的flash的id

flexUITester = new FlexUISelenium(selenium, "Main");

flashApp = new FlashSelenium(selenium, "Main");

//下面举几个操作flex控件的例子

//读取id为username的text框中的内容,这个方法label等控件也能用

flexUITester.readFrom("username");

//按下id为registButton的按钮,这个方法有些图片也能按

flexUITester.click("registButton");

//对id为gaiyo的text设值

flexUITester.type("zhanghuijie").at("gaiyo");

//还有一些方法,像双击等等就不详细说了

接下来是前面说的user-extensions.js,一开始只是用FlexUISelenium方法,发现对flex支持得很有限,后来看他的源代码,其实也是用FlashSelenium的call方法实现,再加上user-extensions.js里面看到有很多方法,就像是不是也能直接利用,结果证实是可以的,举几个例子。

//这个是对下拉框的设值,aaaa是id,1就是设置下拉框的第一个值

flashApp.call("doFlexSelectIndex","aaaa" ,"1");

//这个是得到datagrid中数据条数,bbbb是id

flashApp.call("getFlexDataGridRowCount", "bbbb");

user-extensions.js中有很多方法,我也没一一测试,相信虽然不能对flex所有控件操作,但是很多还是可以操作的。

希望大家能互相探讨,其实我还有很多不明白。

--------------------------------评论--------------------------------------

今天补充一个刚研究出来的命令,对datagrid的操作,

取得datagrid中单元格的内容

flashApp.call("getFlexDataGridCell", "aaa,1,5");

aaa是datagrid的id

1是行

5是列
今天补充对tab的操作

junit:

flashApp.call("doFlexClick", "tabid","tablabel");

flex:

<mx:TabNavigator id="tabid".......>

<mx:Canvas label="tablabel".....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: