51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2954|回复: 4
打印 上一主题 下一主题

winrunner使用问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-2-2 20:58:22 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
请问winrunner怎样使用事件触发?
比如,当一个对话框消失后插入一个时间记录点,对话框是自动消失的。有没有高人能不吝赐教啊。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2016-8-25 11:11
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
    发表于 2010-12-18 01:20:58 | 只看该作者
    回复 4# mxin79747993


        你这能用到WR里吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2010-12-10 17:00:19 | 只看该作者
    package test;

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class ContainerType extends BaseType {

            /**
             * 获取第一个最外层容器,如果没有则返回null
             *
             * @param text
             * @return
             */
            protected String getContainer(String text, String regex) {
                    Pattern p = Pattern.compile(regex);
                    Matcher m = p.matcher(text);
                    if (m.find()) {
                            String temp = m.group();
                            int flag = 0;
                            int left = 0;
                            int right = 0;
                            char[] ca = temp.toCharArray();
                            for (int i = 0; i < ca.length; i++) {
                                    if (ca[i] == '{') {
                                            left++;
                                    } else if (ca[i] == '}') {
                                            right++;
                                    }

                                    if (left == right && left != 0) {
                                            flag = i + 2;
                                            break;
                                    }
                            }
                            return temp.substring(0, flag);
                    }
                    return null;
            }
           
            /**
             * 获取容器类型
             * @param text
             * @return module or interface
             */
            protected String getContainerType(String text){
                    Pattern p = Pattern.compile(Regex.REGEX_CONTAI_TYPE);
                    Matcher m = p.matcher(text);
                    if(m.find()){
                            String temp = m.group();
                            return temp.substring(0, temp.indexOf(" ")).trim();
                    }
                    return null;
            }
           
           
           
           
    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2010-12-10 16:59:58 | 只看该作者
    package test.ctype;

    import org.jdom.Element;

    import test.ContainerType;
    import test.Regex;

    public class CModule extends ContainerType {

            public CModule() {
            }

            /**
             * 获取第一个最外层module,如果没有则返回null
             *
             * @param text
             * @return
             */
            public String getContainer(String text) {
                    return super.getContainer(text, Regex.REGEX_M_OR_I);
            }

            /**
             * 获取第一个最外层module,从startIndex位置开始查找
             *
             * @param text
             * @param startIndex
             * @return
             */
            public String getContainer(String text, int startIndex) {
                    text = text.substring(startIndex);
                    return this.getContainer(text);
            }

            /**
             * 将module和interface转换成xml格式
             *
             * @param node
             *            将新节点加入此节点下
             * @param name
             */
            public void toXML(Element node, String text, int start) {
                    String module = getContainer(text, start);
                    Element e = null;
                    String content = null;
                    while (module != null) {
                            String name = getName(module); // module或interface名
                            String type = getContainerType(module); // 关键字module或interface
                            content = getContent(module); // 大括号里的内容
                            /**
                             * 根据类型创建节点
                             */
                            if (type.equals("module")) {
                                    e = new Element("module");
                                    e.setAttribute("name", name);
                            } else if (type.equals("interface")) {
                                    e = new Element("interface");
                                    e.setAttribute("name", name);
                                    new CInterface().toXML(e, content);
                            }
                           
                            node.addContent(e);
                           
                            if (content == null || content.equals("")) {
                            } else {
                                    toXML(e, content, 0);
                            }
    //                        start += (module.length() + text.indexOf(module));
                            //标记从上一个module后开始查找module或interface
                            start = text.indexOf(module) + module.length() - 1;
                            //获取下一个module或interface
                            module = getContainer(text, start);
                    }
            }

    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2#
     楼主| 发表于 2010-12-10 16:59:31 | 只看该作者
    public List<String[]> getMethods(String content) {
                    List<String[]> list = new ArrayList<String[]>();
                    Pattern p = Pattern.compile(Regex.REGEX_FUNC);
                    Matcher m = p.matcher(content);
                    while (m.find()) {
                            String temp = m.group().trim();
                            // 将一个函数每个部分拆分出来存入数组
                            String[] spOpr = new String[5];
                            // 第1个元素保存函数类型oneway|twoway
                            String field1 = temp.substring(0, temp.indexOf(" "));
                            if (field1.equals("oneway")) {
                                    spOpr[0] = field1;
                                    temp = temp.substring(temp.indexOf(" ")).trim();
                            } else {
                                    spOpr[0] = "twoway";
                            }
                            // 第2个元素保存函数返回值类型
                            spOpr[1] = temp.substring(0, temp.indexOf(" "));
                            temp = temp.substring(temp.indexOf(" ")).trim();
                            // 第3个元素保存函数名
                            spOpr[2] = temp.substring(0, temp.indexOf("(")).trim();
                            String field4 = temp.substring(temp.indexOf("(") + 1,
                                            temp.indexOf(")")).trim();
                            // 第4个元素保存参数列表,如没有则置为空值
                            spOpr[3] = field4.equals("") ? null : field4;
                            String field5 = temp.substring(temp.lastIndexOf("(") + 1,
                                            temp.lastIndexOf(")")).trim();
                            // 第5个元素保存异常,如没有则置为空值
                            spOpr[4] = field5.equals(field4) ? null : field5;
                            list.add(spOpr);
                    }
                    return list;
            }

            /**
             * 将函数转换为XML格式
             *
             * @param optRoot
             * @param content
             */
            public void toXML(Element optRoot, String content) {
                    if (content == null)
                            return;

                    List<String[]> list = getMethods(content);
                    for (int i = 0; i < list.size(); i++) {
                            String[] func = list.get(i);
                            // 生成operation节点,函数的根节点
                            Element operation = new Element("operation");
                            operation.setAttribute("name", func[2]);
                            operation.setAttribute("type", func[0]);
                            // 生成req节点,属operation下一级节点
                            Element req = new Element("req");
                            Element rsp = null;
                            /**
                             * 如果函数是twoway类型则生成rsp节点 rsp节点下第一个param为函数调用结果
                             */
                            if (func[0].equals("twoway")) {
                                    rsp = new Element("rsp");
                                    Element resultP = new Element("param");
                                    Element resultN = new Element("node");
                                    resultN.setAttribute("name", "call_result");
                                    resultN.setAttribute("type", "oct");
                                    resultN.setAttribute("value", "");
                                    resultP.addContent(resultN);
                                    rsp.addContent(resultP);
                            }

                            //函数返回值转换
                            retToXML(rsp, func[1]);
                            //函数参数转换
                            paramToXML(req, rsp, func[3]);

                            operation.addContent(req);
                            if (rsp != null) {
                                    operation.addContent(rsp);
                            }
                            optRoot.addContent(operation);

                    }
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-17 14:18 , Processed in 0.074334 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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