51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8426|回复: 21
打印 上一主题 下一主题

[原创] 如何操作WEB滚动条(不使用低级录制方式)——在线等待

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-12-25 16:12:40 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
进行WEB页面录制时,QTP不能识别滚动条,采用SKY探测也没准确结果,以致无法用脚本操作滚动条,请各位高手指点QTP如何操作WEB页面的滚动条,不甚感激!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

22#
发表于 2012-3-13 22:22:14 | 只看该作者
在WebEdit中的滚动条处理
看了前面的回复,我自己也遇到一个问题

如上两个图,当滚动条在最下方的时候,点击submit后,才显示“Thank”。这个场景在用户阅读法律条文时较常见,即只有用户阅读了信息(滚动条滚动到了最下方),才能正常提交。

根据之前同志们的提示,我如此实现的:

  1. Browser("Selenium Study").Page("Selenium Study").WebButton("Submit").Click
  2. Browser("Selenium Study").WinButton("为帮助保护您的安全,Internet Explorer").Click
  3. Browser("Selenium Study").WinMenu("ContextMenu").Select "允许阻止的内容(A)..."
  4. Browser("Selenium Study").Dialog("安全警告").WinButton("是(Y)").Click
  5. Browser("Selenium Study").Dialog("Microsoft Internet Explorer").WinButton("重试(R)").Click
  6. Browser("Selenium Study").Page("Selenium Study").WebButton("Submit").Click
  7. Browser("Selenium Study").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
  8. Browser("Selenium Study").Page("Selenium Study").WebButton("Submit").Click
  9. Browser("Selenium Study").Page("Selenium Study").WebEdit("text").Object.scrollTop=500
  10. Browser("Selenium Study").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
  11. Browser("Selenium Study").Page("Selenium Study").WebButton("Submit").Click
  12. Browser("Selenium Study").Dialog("Microsoft Internet Explorer").Static("Thanks !").Check CheckPoint("Thanks !")
复制代码

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

21#
发表于 2010-12-14 16:26:05 | 只看该作者
顶上来,高手帮忙看看如何处理
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2010-12-13 19:15:12 | 只看该作者
pageobj.Object.body.scrollTop = 100
设置完之后pageobj.Object.body.scrollTop还是为0,不能对它进行设置值吧?
上面的方法都试过,还是不行,不能操作滚动条,请高手现身指点
1.那时候在我本地,我只适用了doScroll(scrollbardown),语句执行没有错误,并且滚动条向下行动了。 ...
jinsen 发表于 2007-12-27 12:18
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2009-8-26 20:53:21 | 只看该作者
原帖由 flyfly310 于 2008-3-1 22:39 发表
我试了一下
可以对滚动条进行操作的
例如
browser("百度一下,你就知道").Page("百度搜索_adf").WebElement("新闻   网页   贴吧   知道   MP3").Drag 1,1700
前提是把webelement("新闻   网页   贴吧   知道    ...



这个才是正解
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2008-3-1 22:39:28 | 只看该作者

回复 17# 的帖子

我试了一下
可以对滚动条进行操作的
例如
browser("百度一下,你就知道").Page("百度搜索_adf").WebElement("新闻   网页   贴吧   知道   MP3").Drag 1,1700
前提是把webelement("新闻   网页   贴吧   知道   MP3")这个对象添加到对象库中
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2008-2-22 11:25:02 | 只看该作者
原帖由 zhou840401 于 2007-12-25 17:13 发表

提示scrollbarDown未定义



txtScrollMe.doScroll("scrollbarPageDown");

没加引号!
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2008-2-22 10:28:14 | 只看该作者
超级期待中
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-12-28 15:37:32 | 只看该作者
能不能再具体描述下你现在的问题?我发的两种方法在我本地都可以对页面的滚动条进行操作的。第一种无法精确操作,但我想第二种在经过计算后,应该是可行的。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2007-12-28 15:13:06 | 只看该作者
自己顶啊...
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2007-12-28 11:47:10 | 只看该作者
jinsen所提出的方法,还是没解决问题,请大家继续关注。。。。期待解决。。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-12-27 12:18:53 | 只看该作者
原帖由 lelebachelor 于 2007-12-27 11:45 发表
1.        doScroll(scrollbardown)/doScroll(scrollbarup)这样写是能执行,但是执行语句没有实际结果,即滚动条没有进行向下/向上行动....
     2.        scrollbardown/scrollbarup是取默认值,请问这个默认值是多少 ...



1.那时候在我本地,我只适用了doScroll(scrollbardown),语句执行没有错误,并且滚动条向下行动了。这才导致了我说"scrollbardown"是常量,也没有检测其他的参数。很对不起。
2.对于默认值这个我没有找到,不过找了一个新的控制ScrollBar的方法,并且应该能够精确的控制。以下是代码:
Dim pageobj '//定义画面对象
Set pageobj = Browser("CreationTime:=4").Page("index:=") '//画面对象赋值
'pageobj.Object.body.doScroll() '//操纵画面上的ScrollBar向下滚动。

Dim myScrollHeight,myScrollLeft,myScrollTop,myScrollWidth,tempValue
'获取对象的滚动高度。
myScrollHeight = pageobj.Object.body.scrollHeight
'获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。
myScrollLeft = pageobj.Object.body.scrollLeft
'获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。
myScrollTop = pageobj.Object.body.scrollTop
'获取对象的滚动宽度。
myScrollWidth = pageobj.Object.body.scrollWidth

tempValue = "ScrollHeight = " & myScrollHeight & vbNewLine
tempValue = tempValue + "ScrollLeft = " & myScrollLeft & vbNewLine
tempValue = tempValue + "ScrollTop = " & myScrollTop & vbNewLine
tempValue = tempValue + "ScrollWidth = " & myScrollWidth

print(tempValue)

'设置位于对象最顶端和窗口中可见内容的最顶端之间的距离为100。
pageobj.Object.body.scrollTop = 100

我的想法是可以通过给这些属性赋值来控制滚动条的行动。

[ 本帖最后由 jinsen 于 2007-12-27 12:21 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2007-12-27 11:45:06 | 只看该作者
1.        doScroll(scrollbardown)/doScroll(scrollbarup)这样写是能执行,但是执行语句没有实际结果,即滚动条没有进行向下/向上行动....
     2.        scrollbardown/scrollbarup是取默认值,请问这个默认值是多少(应该是行数吧)
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-12-27 11:27:34 | 只看该作者
LZ和zhou840401:

很对不起,由于我在QTP里运行时没有问题,所以对于其他的参数没有一一检测。
"scrollbarDown"由于是默认值,在方法里写不写都可以,所以可能由于某种原因(不明)QTP在方法发生错误的时候,没有报错。
对于常量这个说法确实是不正确的,它应该作为一个字符串传入。

以下是修正后的代码:

Dim pageobj '//定义画面对象
Set pageobj = Browser("CreationTime:=4").Page("index:=") '//画面对象赋值
pageobj.Object.body.doScroll("scrollbarUp") '//操纵画面上的ScrollBar向上滚动。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-12-27 11:08:43 | 只看该作者
本人凝问:在QTP的帮助文档中都看到有关Scrollbar对象说明,这应该说QTP是可以支付Scrollbar对象的,但为何实际使用QTP却识别不到对象,是不是设置问题呢(我使用的是QTP8。2版)?  如果QTP能识别到Scrollbar对象我想问题就好办了,请问有没有同仁识别到此对象。。。。盼回谢谢。。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2007-12-27 11:02:18 | 只看该作者
原帖由 jinsen 于 2007-12-25 17:34 发表
不会吧,这段代码是我在本地跑通过后再发上来的。
我用的是描述性编程,像"CreationTime"等需要对应于你的Web页面做出一定的修正,还有就是你要控制的ScroolBar的定位要准确。我这里控制的是IE上的ScroolBar,如果是 ...




     你写的这段代码的确不能执行(无论Scrollbardown为何值都会报错),你说的Scrollbardown是常量,那就可以直接用常数代替,可我觉得这个常量又与object.doScroll( [sScrollAction])的使用描述不符....请将Scrollbar的详细使用说明共享出来!..谢谢..

[ 本帖最后由 lelebachelor 于 2007-12-27 11:04 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-12-25 17:34:56 | 只看该作者
不会吧,这段代码是我在本地跑通过后再发上来的。
我用的是描述性编程,像"CreationTime"等需要对应于你的Web页面做出一定的修正,还有就是你要控制的ScroolBar的定位要准确。我这里控制的是IE上的ScroolBar,如果是要控制Frame等页面内部的ScroolBar的话,pageobj也要改变一下。

pageobj.Object.body.doScroll(scrollbarDown)
这个用的是HTML语言
scrollbarDown:这个是常量
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-12-25 17:13:28 | 只看该作者
原帖由 jinsen 于 2007-12-25 16:41 发表
Dim pageobj '//定义画面对象
Set pageobj = Browser("CreationTime:=1").Page("index:=") '//画面对象赋值
pageobj.Object.body.doScroll(scrollbarDown) '//操纵画面上的ScrollBar向下滚动。

提示scrollbarDown未定义
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-12-25 17:06:52 | 只看该作者
楼上的利害啊
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-12-25 16:43:32 | 只看该作者
object.doScroll( [sScrollAction])
sScrollAction Optional. String that specifies how the object scrolls, using one of the following values:

scrollbarDown: Default. Down scroll arrow is at the specified location.  
scrollbarHThumb: Horizontal scroll thumb or box is at the specified location.
scrollbarLeft: Left scroll arrow is at the specified location.
scrollbarPageDown: Page-down scroll bar shaft is at the specified location.
scrollbarPageLeft: Page-left scroll bar shaft is at the specified location.
scrollbarPageRight: Page-right scroll bar shaft is at the specified location.
scrollbarPageUp: Page-up scroll bar shaft is at the specified location.
scrollbarRight: Right scroll arrow is at the specified location.
scrollbarUp: Up scroll arrow is at the specified location.
scrollbarVThumb: Vertical scroll thumb or box is at the specified location.
down: Composite reference to scrollbarDown.
left: Composite reference to scrollbarLeft.
pageDown: Composite reference to scrollbarPageDown.
pageLeft: Composite reference to scrollbarPageLeft.
pageRight: Composite reference to scrollbarPageRight.
pageUp: Composite reference to scrollbarPageUp.
right: Composite reference to scrollbarRight.
up: Composite reference to scrollbarUp.
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-23 06:56 , Processed in 0.120054 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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