51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3557|回复: 2
打印 上一主题 下一主题

[SilkTest] SilkTest在Silk4J中如何完成CS程序所有对象的遍历

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2013-11-28 16:55:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如下代码主要完成了如下操作:
        在XP系统自带的“计算器”上将所有对象遍历并把对象类型打印出来
        进行对象类型的匹配(如:PushButton)
        进行对象属性的匹配(如:caption)
        通过正则表达式来进行对象过滤(如:regexs)
        在匹配好的对象上完成了PushButton的点击(如:数字按钮)

下面是完整的代码:
  1. import java.util.List;

  2. import com.borland.silktest.jtf.Desktop;
  3. import org.junit.Before;
  4. import com.borland.silktest.jtf.BaseState;
  5. import org.junit.Test;

  6. import com.borland.silktest.jtf.TestObject;
  7. import com.borland.silktest.jtf.Window;
  8. import com.borland.silktest.jtf.PushButton;

  9. import org.junit.Assert;

  10. public class findAllCSMethod {

  11.         private Desktop desktop = new Desktop();

  12.         @Before
  13.         public void baseState() {
  14.                 BaseState baseState = new BaseState();
  15.                 baseState.execute(desktop);
  16.         }

  17.         @Test
  18.         public void findAllCSMethod1() {
  19.                 desktop.<Window>find("/Window[@caption='计算器']").setActive();
  20.                 desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='C']").select();
  21.                 desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='1']").select();
  22.                 desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='+']").select();
  23.                 desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='3']").select();
  24.                 desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='=']").select();
  25.                 //desktop.<TextField>find("/Window[@caption='计算器']//TextField").setPosition(new TextPosition(0, 3));
  26.                 //desktop.<TextField>find("/Window[@caption='计算器']//TextField").setText("4. ");
  27.                 //TextField textField = desktop.<TextField>find("/Window[@caption='计算器']//TextField");
  28.                 //Assert.assertEquals("4. ", textField.getText());
  29.                
  30.                 try {
  31.                         Thread.sleep(2000);
  32.                 } catch (InterruptedException e) {
  33.                         // TODO Auto-generated catch block
  34.                         e.printStackTrace();
  35.                 }

  36.                 //获取所有的browserWindow的list对象
  37.                 List<TestObject> lc = desktop.findAll("//*");
  38.                 //List<TestObject> lc = desktop.getChildren();
  39.                 //如果需要获取所有的DomTextField的list对象
  40.                 //List<TestObject> lc = desktop.findAll("//DomTextField");
  41.                 //定义一个自定义属性值名称
  42.         String propertys = "caption";
  43.         //定义一个TestObject对象
  44.         TestObject tobj;
  45.         //定义一个正则表达式的模板
  46.         String regexs = "[0-9]*";
  47.         //获取browserWindow的list的总数
  48.         int lcc = lc.size();
  49.         System.out.println(lcc);
  50.         //以list总数去遍历整个list对象
  51.         for (int i = 0; i < lcc; i++)
  52.         {
  53.             //获取lc的i个对象
  54.             tobj = lc.get(i);
  55.             List<String> tobjl;
  56.             String tobjs = null;
  57.             String tobjt;
  58.             //获取tobj对象的类型,如“PushButton”
  59.             //tobjt = tobj.getClass().getName().toString();
  60.             //获取到的数据为“DomLink”
  61.             tobjt = tobj.getClass().getSimpleName();
  62.             System.out.println(tobjt);
  63.             //获取对象的所有属性列表
  64.             tobjl = tobj.getPropertyList();
  65.             System.out.println(tobjl);
  66.             try
  67.             {
  68.                     //获取tobj对象的属性值,如“name”
  69.                     tobjs = tobj.getProperty(propertys).toString();
  70.                     System.out.println(tobjs);
  71.                 //判断对象类型等于"PushButton"
  72.                 if (tobjt.equals("PushButton"))
  73.                 {
  74.                     //点击所有匹配regexs的PushButton按钮
  75.                     if (tobjs.matches(regexs))
  76.                     {
  77.                         //点击对象类型为"PushButton",对象属性为tobjs的按钮
  78.                             desktop.<PushButton>find("/Window[@caption='计算器']//" + tobjt + "[@" + propertys + "='" + tobjs + "']").select();
  79.                     }
  80.                     //点击所有的PushButton按钮
  81.                     //desktop.<PushButton>find("/Window[@caption='计算器']//" + tobjt + "[@" + propertys + "='" + tobjs + "']").select();
  82.                 }
  83.             }catch(Exception e){
  84.                     //e.toString("对象不支持此" + propertys + "属性!");
  85.                     //e.printStackTrace();
  86.                     //e.printStackTrace();
  87.             }
  88.         }

  89.         }

  90. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2014-3-1 13:49:43 | 只看该作者
绝对喜欢,好帖子不多哦,顶一下












tnt辅助|强化辅助免费版|tnt辅助刷武器永久
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2014-10-30 17:43:29 | 只看该作者
这个代码是不是有问题,怎么我这看到的很奇怪啊,比如:
public class findAllCSMethod {

        private Desktop desktop = new Desktop();
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-28 20:12 , Processed in 0.069649 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表