51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3304|回复: 11
打印 上一主题 下一主题

[原创] qtp执行中为什么某两个page会同时都exist

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-1-6 17:14:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

以上脚本是用来测试某个登录功能的。
Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******")这个是登陆页面
Browser("登录我的空间 - 金手杖商城系统").Page("个人空间 -_2")这个是登陆成功后进入的页面。
用户名、密码和登录后的文本检查,都是用datatable来实现的。

程序里我这里用了一个IF else想实现的是:如果登录页面存在,那么表示登录错误,文本检查点在登录页面Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******")进行检查,否则到Browser("登录我的空间 - 金手杖商城系统").Page("个人空间 -_2")这个登录成功后的页面进行登录成功的文本检查。

问题是:
图1中进行debug的时候,才开始第一次循环,应该是登陆不成功的,那么我的想法是Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******").exist是true的,另外一个应该是false的,但是看上图1中,两个都为true。哪位高手能帮忙解释一下?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2010-1-7 09:14:29 | 只看该作者
有没有人能给回答一下的。万分感谢了
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-1-7 09:32:06 | 只看该作者
这个问题我也很想知道答案!
因为我之前也常碰到类似的问题,明明页面上没有显示,但用exist、visible去判断,得到的结果却都是True。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-1-7 10:01:34 | 只看该作者
这是你对QTP对象的EXIST方法不熟悉造成的
exist方法,判断选择的对象是否实际存在,判断使用的规则来源于你在对象库中该对象的属性.
Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******") 这个对象
那么你是否实际确定了,对象库中
Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******")
这个对象所记录的属性,实际是否存在呢,
据我了解,page页面一般只记录URL这样一个属性,如果你登陆后URL不改变,那么这个判断永远都会成立
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2010-1-8 10:14:25 | 只看该作者
原帖由 onlonely 于 2010-1-7 10:01 发表
这是你对QTP对象的EXIST方法不熟悉造成的
exist方法,判断选择的对象是否实际存在,判断使用的规则来源于你在对象库中该对象的属性.
Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******") 这个对象
...

我的理解:qtp对象分测试对象(录制时记住对象)和运行时对象(在运行会话过程中标识对象)
所以我的理解是对象库中的都是测试对象,录制时就记住的。那么exist应该是用来判断运行时是否存在的才对啊;如果是判断对象库里是否存在的话,那是肯定存在的啊,如果不存在运行的时候直接就提示对象找不到了的。
以上两个page保存的值里,属性分别都保存了url和title。而且name,url和title的值都是不同的呢

[ 本帖最后由 shaofei19820625 于 2010-1-8 10:20 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2010-1-8 11:16:17 | 只看该作者
高手们欢迎来解答......hoho
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-1-8 11:35:09 | 只看该作者
打开你的对象库,将对象的"Enable Smart Identification"选项置为"False"
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2010-1-11 11:23:20 | 只看该作者
原帖由 wugecat 于 2010-1-8 11:35 发表
打开你的对象库,将对象的"Enable Smart Identification"选项置为"False"

我刚刚试了一下,即便我去设置为false,以上说的两个page在exist判断的时候,还是同时为true的呢。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-1-15 10:16:56 | 只看该作者
Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******").WinEdit("username").Set DataTable("D", dtGlobalSheet)
Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******").WinEdit("password").SetSecure DataTable("C", dtGlobalSheet)
Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******").WinButton("OK").Click
if Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******").Check (Checkpoirt("LoginOK"))
   Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******").WebElement("退出系统").Click
   Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******").WebButton("是").Click
   reporter.ReportEvent micPass,"登陆成功","登陆成功"
else
   Browser("登录我的空间 - 金******").Dialog("Windows Internet Explorer").WinButton("确定").Click
   reporter.ReportEvent micFail,"登陆失败","用户名或密码错误"

[ 本帖最后由 borisman 于 2010-1-15 10:18 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-1-16 19:31:01 | 只看该作者
给我看看你的PAGE是使用什么属性来识别的?!建议你使用 title 属性来识别。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2010-1-18 10:40:26 | 只看该作者
Browser("登录我的空间 - 金手杖商城系统").....还是露底了。

我也经常遇到这种情况,有时它就是存在的,不管是frame还是page,还是Button,都一样,我建议在两个页面分别执行以下脚本:
MsgBox Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******").GetRoProperty("height")
MsgBox Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******").GetRoProperty("width")
MsgBox Browser("登录我的空间 - 金手杖商城系统").Page("个人空间 -_2").GetRoProperty("height")
MsgBox Browser("登录我的空间 - 金手杖商城系统").Page("个人空间 -_2").GetRoProperty("width")

分别看下它们的大小,估计另外的页面,高和宽都是为0的。。可以试试
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-5-11 13:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    12#
    发表于 2010-1-19 16:40:38 | 只看该作者
    建议一般不用整个页面存在的方法来作为判断标准,最好是用页面中的某个子对象作为判断标准。例如:点了登录之后如果登录button仍然存在,就是不成功。如果成功,就那登录后的页面中某个对象是存在的。例如:
    if Browser("登录我的空间 - 金******").Page("登录我的空间 - 金******").webbutton("Login").getproperty("visible")=false then
       msgbox "success"
    else
      msgbox "failure"
    end if
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

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

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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