51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 4652|回复: 17
打印 上一主题 下一主题

[讨论] 关于解决分辨率变化的简单的笨办法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-5-16 12:32:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
记得我曾经问过,现在再一次发起

脚本做好以后,一旦分辨率改变以后,很多关于坐标的操作都出错了,因为坐标已经改变了,不知道大家有没有碰到过,或者已经解决了,请大家给个建议
最后我有一个简单的笨办法,个人来讲不太满意,以后再贴出来,先听听大家的意见

[ 本帖最后由 lijinshui 于 2009-5-16 12:34 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-5-16 15:09:03 | 只看该作者
用WINDOWS API函数实现最高效,可以用这两个函数EnumDisplaySettings ,ChangeDisplaySettings
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-5-16 15:11:24 | 只看该作者
版主很强,但是不知道具体的情况。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2009-5-16 17:01:43 | 只看该作者
原帖由 lantianwei 于 2009-5-16 15:09 发表
用WINDOWS API函数实现最高效,可以用这两个函数EnumDisplaySettings ,ChangeDisplaySettings

恳请斑竹给个简单的小例子呗,感谢感谢
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2009-5-16 17:15:42 | 只看该作者
我其实不是想调节分辨率,只是我的脚本运行环境是可以变化的,比如我编写脚本里面的分辨率是1024X724,点击了一个坐标(250,456)可以打开一个窗口,,脚本运行的机器分辨率是1600X1200的话点击坐标(250,456),可能就不可以打开那个窗口了,有没有一个函数可以换算坐标,比如 在分辨率是1024X724的坐标(250,456),乘一个系数后就可以得到分辨率是1600X1200的相应的坐标值
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-5-16 19:49:58 | 只看该作者
原帖由 lijinshui 于 2009-5-16 17:15 发表
我其实不是想调节分辨率,只是我的脚本运行环境是可以变化的,比如我编写脚本里面的分辨率是1024X724,点击了一个坐标(250,456)可以打开一个窗口,,脚本运行的机器分辨率是1600X1200的话点击坐标(250,456),可能就不可 ...


每次脚本运行之前的初始化过程,设置分辨率为统一。
如果QTP/VBS/WMI没有封装相应的函数,引用windows api实现。
分辨率仅仅是自动化过程中很微不足道的一点,并不需要投入太多的精力去换算。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-5-16 20:13:40 | 只看该作者
为什么要用低级录制呢?我感觉只有万不得已才用坐标的。。。
但如果非要用坐标录制还不如不做自动化,说明这个系统不适合自动化或者这个自动化工具不适合这个系统。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2009-5-16 20:39:59 | 只看该作者

回复 4# 的帖子

我说的只是种思路,实现这个功能主要用到2点:通过API函数编写一个DLL(功能源码网上一大片,要做的就是将其改写成DLL形式的);将该DLL导入到QTP中,然后就可以调用了。我这里没有QTP的环境,要不就帮你写个了。但按照这种思路,肯定就能实现这种功能。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-5-16 20:45:49 | 只看该作者

回复 5# 的帖子

用动态获得坐标应该会解决这一问题
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2009-5-18 14:24:31 | 只看该作者
原帖由 ls_721521 于 2009-5-16 20:13 发表
为什么要用低级录制呢?我感觉只有万不得已才用坐标的。。。
但如果非要用坐标录制还不如不做自动化,说明这个系统不适合自动化或者这个自动化工具不适合这个系统。


用坐标似乎很常见吧。比如鼠标单击事件,如果你不用低级录制,你用QTP的其它录制,它录制下来的结果就不会有坐标吗?
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2009-5-18 14:27:30 | 只看该作者
原帖由 ls_721521 于 2009-5-16 20:13 发表
为什么要用低级录制呢?我感觉只有万不得已才用坐标的。。。
但如果非要用坐标录制还不如不做自动化,说明这个系统不适合自动化或者这个自动化工具不适合这个系统。



确实感觉用坐标录制很低级
这样的话可以考虑换工具或者这部分不做自动化了
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2009-5-18 14:28:23 | 只看该作者
原帖由 shanxi 于 2009-5-18 14:24 发表


用坐标似乎很常见吧。比如鼠标单击事件,如果你不用低级录制,你用QTP的其它录制,它录制下来的结果就不会有坐标吗?



单击事件  可以看具体点击哪个对象  然后该对象.click   如果这个对象都不识别。。确实不太适合了
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2009-5-18 14:47:15 | 只看该作者
原帖由 wuei9090 于 2009-5-18 14:28 发表



单击事件  可以看具体点击哪个对象  然后该对象.click   如果这个对象都不识别。。确实不太适合了


明白你说描述的,你这样录制回放时,必定是需要查找该控件,找到后才能自动化它。局限性也存在于此。
实际有些操作,比如Drag & Drop 是非得需要坐标来回放的。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2015-9-21 13:50
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    14#
    发表于 2009-5-18 14:48:35 | 只看该作者
    持续关注此贴
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2009-6-8 14:59:52 | 只看该作者
    原帖由 lantianwei 于 2009-5-16 20:45 发表
    用动态获得坐标应该会解决这一问题

    我也感觉动态获得坐标是不错的方法
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2009-6-8 15:15:59 | 只看该作者
    原帖由 ziheng198688 于 2009-6-8 14:59 发表

    我也感觉动态获得坐标是不错的方法

    同意。
    我目前的做法是,在操作一个测试对象前,首先对这个对象的坐标进行判断,看是否在屏幕范围内,如果不在,则调整滚动条(我的测试界面中只处理滚动条即可),直到测试对象出现为止,然后再执行相关的操作。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2009-6-9 08:45:20 | 只看该作者
    用GetROProperty获取对象的相对坐标再单击了.如下面这个函数就是我用来对那些识别效果不是很好的对象编写的函数.
    '*******************************************************************
    '函数说明:针对WEB类的页面对于特别的无法完全识别,但是能识别部分属性的做单击操作
    '参数1:NotKnow_Object:不能完全识别的对象
    '返回值:无
    '*******************************************************************
    Function Click_NotKnow(NotKnow_Object)
    Do
      If NotKnow_Object.exist Then
       NotKnow_Object.FireEvent "onfocus"
       wait 1
       NotKnow_Object_x=NotKnow_Object.GetROProperty("x")
       NotKnow_Object_y=NotKnow_Object.GetROProperty("y")
       Window("regexpwndtitle:=Microsoft Internet Explorer").WinObject("regexpwndclass:=Internet Explorer_Server").Click NotKnow_Object_x,NotKnow_Object_y
       wait 1
       Exit Function
      End If
    Loop
    End Function
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2009-6-9 10:27:58 | 只看该作者
    高手好多啊。得努力。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-13 19:29 , Processed in 0.079577 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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