杨柳 发表于 2010-11-22 22:44:26

不知道你现在这个问题有没有解决呢?
我有方法可以解决

sunnyswu 发表于 2010-11-22 23:39:39

回复 1# peimzh

有意思,了解下

sunnyswu 发表于 2010-11-23 00:08:13

http://bbs.51testing.com/viewthread.php?tid=72995
这个 帖子足以解决你的问题了
呵呵

dreamever 发表于 2010-11-23 13:14:43

这个问题我喜欢。有实战,有挑战。
不过我是用rft的,JAVA脚本,写了个例子。我同意3#的意见,对于DIV,直接识别是有问题的,我采用的方法是首先找到这些DIV对象的父对象,然后遍历父对象的子对象,找到需要的信息。我想出题人的意图也就在这里吧。我把代码贴出来,虽然不是QTP的,但是我想原理是相同的
        RootTestObject root = this.getRootTestObject();
                TestObject[] links = root.find(this.atDescendant(".id","jxContentPanel"));//获取列表的父对象
                TestObject[] childTo = links.getChildren();
                ArrayList<String> arr = new ArrayList<String>();
                for(int i = 0; i < childTo.length; i++){//遍历父对象的所有子对象,找出classname为hotelList的对象,并将其文本属性放到队列中
                        String className = childTo.getProperty(".className").toString();
                        if(className.equals("hotelList")){
                                arr.add(childTo.getProperty(".text").toString());
                        }

                }
                /*
               * 以下代码分别取出队列中的酒店信息,根据空格进行分析,得出面试题所要求的信息。
               * 该方法假设所有的各个字段都不包含空格,
               * 其实更为完善的方式,将每个hotelList对象放到队列中,然后通过分析该对象的子对象的方式得到各个字段信息,例如酒店类型的TAG属性为EM
               * 因为只是为了证明我的思路,所以我用字符串简单处理了。。
               */
                for(int i = 0; i < arr.size();i++){
                        String[] temp = arr.get(i).split(" ");
                        /*
                       * 分析字符串,酒店名称是第二个元素,价格是最后一个元素,并且要过滤到“查看详情 ”
                       * 注意哦,其实这两个变量应该放到类里的,因为是例子,为了照顾可读性,我就放到循环里了。
                       */
                        String name = temp;
                        String price = temp.replace("起查看详情", "");
                        System.out.println("酒店的名称是[" + name + "],酒店的价格是:" + price);
                }
最后获取的结果是这样的

酒店的名称是[速8酒店(广州火车站店)],酒店的价格是:¥228
酒店的名称是[广州东方宾馆],酒店的价格是:¥745
酒店的名称是[广州利洋宾馆],酒店的价格是:¥120
酒店的名称是,酒店的价格是:¥197
酒店的名称是,酒店的价格是:¥227
酒店的名称是[广州文星连锁酒店(龙口东店)],酒店的价格是:¥188
酒店的名称是[广州越秀宾馆],酒店的价格是:¥597
酒店的名称是[广东胜利宾馆],酒店的价格是:¥451
酒店的名称是[位于广州荔湾区繁华的上下九步行街——广州第一条商业步行街。网友评价说“小吃都很方便哦,洗手间空间很大”。],酒店的价格是:¥652
酒店的名称是,酒店的价格是:¥227
酒店的名称是[广州合兴大酒店],酒店的价格是:¥250
酒店的名称是[汉庭快捷酒店],酒店的价格是:¥241
酒店的名称是[广州同人宾馆],酒店的价格是:¥364
酒店的名称是[广州博斯坦宾馆],酒店的价格是:¥515
酒店的名称是,酒店的价格是:¥227

dreamever 发表于 2010-11-23 13:16:28

呵呵,还是有问题,有个网友评价竟然也出现酒店名称了,看来用split分析字符串确实有问题
页: 1 [2]
查看完整版本: 急(面试题)