沅芷湘兰 发表于 2013-11-28 16:55:12

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

如下代码主要完成了如下操作:
        在XP系统自带的“计算器”上将所有对象遍历并把对象类型打印出来
        进行对象类型的匹配(如:PushButton)
        进行对象属性的匹配(如:caption)
        通过正则表达式来进行对象过滤(如:regexs)
        在匹配好的对象上完成了PushButton的点击(如:数字按钮)

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

import com.borland.silktest.jtf.Desktop;
import org.junit.Before;
import com.borland.silktest.jtf.BaseState;
import org.junit.Test;

import com.borland.silktest.jtf.TestObject;
import com.borland.silktest.jtf.Window;
import com.borland.silktest.jtf.PushButton;

import org.junit.Assert;

public class findAllCSMethod {

        private Desktop desktop = new Desktop();

        @Before
        public void baseState() {
                BaseState baseState = new BaseState();
                baseState.execute(desktop);
        }

        @Test
        public void findAllCSMethod1() {
                desktop.<Window>find("/Window[@caption='计算器']").setActive();
                desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='C']").select();
                desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='1']").select();
                desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='+']").select();
                desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='3']").select();
                desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='=']").select();
                //desktop.<TextField>find("/Window[@caption='计算器']//TextField").setPosition(new TextPosition(0, 3));
                //desktop.<TextField>find("/Window[@caption='计算器']//TextField").setText("4. ");
                //TextField textField = desktop.<TextField>find("/Window[@caption='计算器']//TextField");
                //Assert.assertEquals("4. ", textField.getText());
               
                try {
                        Thread.sleep(2000);
                } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

                //获取所有的browserWindow的list对象
                List<TestObject> lc = desktop.findAll("//*");
                //List<TestObject> lc = desktop.getChildren();
                //如果需要获取所有的DomTextField的list对象
                //List<TestObject> lc = desktop.findAll("//DomTextField");
                //定义一个自定义属性值名称
      String propertys = "caption";
      //定义一个TestObject对象
      TestObject tobj;
      //定义一个正则表达式的模板
      String regexs = "*";
      //获取browserWindow的list的总数
      int lcc = lc.size();
      System.out.println(lcc);
      //以list总数去遍历整个list对象
      for (int i = 0; i < lcc; i++)
      {
            //获取lc的i个对象
            tobj = lc.get(i);
            List<String> tobjl;
            String tobjs = null;
            String tobjt;
            //获取tobj对象的类型,如“PushButton”
            //tobjt = tobj.getClass().getName().toString();
            //获取到的数据为“DomLink”
            tobjt = tobj.getClass().getSimpleName();
            System.out.println(tobjt);
            //获取对象的所有属性列表
            tobjl = tobj.getPropertyList();
            System.out.println(tobjl);
            try
            {
                    //获取tobj对象的属性值,如“name”
                    tobjs = tobj.getProperty(propertys).toString();
                    System.out.println(tobjs);
                //判断对象类型等于"PushButton"
                if (tobjt.equals("PushButton"))
                {
                  //点击所有匹配regexs的PushButton按钮
                  if (tobjs.matches(regexs))
                  {
                        //点击对象类型为"PushButton",对象属性为tobjs的按钮
                          desktop.<PushButton>find("/Window[@caption='计算器']//" + tobjt + "[@" + propertys + "='" + tobjs + "']").select();
                  }
                  //点击所有的PushButton按钮
                  //desktop.<PushButton>find("/Window[@caption='计算器']//" + tobjt + "[@" + propertys + "='" + tobjs + "']").select();
                }
            }catch(Exception e){
                    //e.toString("对象不支持此" + propertys + "属性!");
                    //e.printStackTrace();
                    //e.printStackTrace();
            }
      }

        }

}

ppcqf 发表于 2014-3-1 13:49:43

绝对喜欢,好帖子不多哦,顶一下











http://www.discuz.net/static/image/common/sigline.gif
tnt辅助|强化辅助免费版|tnt辅助刷武器永久

huhu97 发表于 2014-10-30 17:43:29

这个代码是不是有问题,怎么我这看到的很奇怪啊,比如:
public class findAllCSMethod {

      private Desktop desktop = new Desktop();
页: [1]
查看完整版本: SilkTest在Silk4J中如何完成CS程序所有对象的遍历