51Testing软件测试论坛

标题: 如何操作WEB滚动条(不使用低级录制方式)——在线等待 [打印本页]

作者: lelebachelor    时间: 2007-12-25 16:12
标题: 如何操作WEB滚动条(不使用低级录制方式)——在线等待
进行WEB页面录制时,QTP不能识别滚动条,采用SKY探测也没准确结果,以致无法用脚本操作滚动条,请各位高手指点QTP如何操作WEB页面的滚动条,不甚感激!!!
作者: 7444    时间: 2007-12-25 16:18
标题: 回复 1# 的帖子
如何录制提取出在百度搜索框的下拉菜单中的对象?----好难啊-求教高人
比如在百度输入“国家”   下拉菜单就显示了好多包含此二字的搜索条目   如何把这些东西搞定啊
Object Spy 也弄不到值     low level  and analog 也不行

感觉和你遇到的难点是一样的,你能指点我吗?

你那个用键盘上下控制滚动 看看有机会不
作者: jinsen    时间: 2007-12-25 16:41
Dim pageobj '//定义画面对象
Set pageobj = Browser("CreationTime:=1").Page("index:=") '//画面对象赋值
pageobj.Object.body.doScroll(scrollbarDown) '//操纵画面上的ScrollBar向下滚动。
作者: jinsen    时间: 2007-12-25 16:43
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.
作者: zhou840401    时间: 2007-12-25 17:06
楼上的利害啊
作者: zhou840401    时间: 2007-12-25 17:13
原帖由 jinsen 于 2007-12-25 16:41 发表
Dim pageobj '//定义画面对象
Set pageobj = Browser("CreationTime:=1").Page("index:=") '//画面对象赋值
pageobj.Object.body.doScroll(scrollbarDown) '//操纵画面上的ScrollBar向下滚动。

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

pageobj.Object.body.doScroll(scrollbarDown)
这个用的是HTML语言
scrollbarDown:这个是常量
作者: lelebachelor    时间: 2007-12-27 11:02
原帖由 jinsen 于 2007-12-25 17:34 发表
不会吧,这段代码是我在本地跑通过后再发上来的。
我用的是描述性编程,像"CreationTime"等需要对应于你的Web页面做出一定的修正,还有就是你要控制的ScroolBar的定位要准确。我这里控制的是IE上的ScroolBar,如果是 ...




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

[ 本帖最后由 lelebachelor 于 2007-12-27 11:04 编辑 ]
作者: lelebachelor    时间: 2007-12-27 11:08
本人凝问:在QTP的帮助文档中都看到有关Scrollbar对象说明,这应该说QTP是可以支付Scrollbar对象的,但为何实际使用QTP却识别不到对象,是不是设置问题呢(我使用的是QTP8。2版)?  如果QTP能识别到Scrollbar对象我想问题就好办了,请问有没有同仁识别到此对象。。。。盼回谢谢。。
作者: jinsen    时间: 2007-12-27 11:27
LZ和zhou840401:

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

以下是修正后的代码:

Dim pageobj '//定义画面对象
Set pageobj = Browser("CreationTime:=4").Page("index:=") '//画面对象赋值
pageobj.Object.body.doScroll("scrollbarUp") '//操纵画面上的ScrollBar向上滚动。
作者: lelebachelor    时间: 2007-12-27 11:45
1.        doScroll(scrollbardown)/doScroll(scrollbarup)这样写是能执行,但是执行语句没有实际结果,即滚动条没有进行向下/向上行动....
     2.        scrollbardown/scrollbarup是取默认值,请问这个默认值是多少(应该是行数吧)
作者: jinsen    时间: 2007-12-27 12:18
原帖由 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 编辑 ]
作者: lelebachelor    时间: 2007-12-28 11:47
jinsen所提出的方法,还是没解决问题,请大家继续关注。。。。期待解决。。
作者: lelebachelor    时间: 2007-12-28 15:13
自己顶啊...
作者: jinsen    时间: 2007-12-28 15:37
能不能再具体描述下你现在的问题?我发的两种方法在我本地都可以对页面的滚动条进行操作的。第一种无法精确操作,但我想第二种在经过计算后,应该是可行的。
作者: hellen_ma    时间: 2008-2-22 10:28
超级期待中
作者: kursk    时间: 2008-2-22 11:25
原帖由 zhou840401 于 2007-12-25 17:13 发表

提示scrollbarDown未定义



txtScrollMe.doScroll("scrollbarPageDown");

没加引号!
作者: flyfly310    时间: 2008-3-1 22:39
标题: 回复 17# 的帖子
我试了一下
可以对滚动条进行操作的
例如
browser("百度一下,你就知道").Page("百度搜索_adf").WebElement("新闻   网页   贴吧   知道   MP3").Drag 1,1700
前提是把webelement("新闻   网页   贴吧   知道   MP3")这个对象添加到对象库中
作者: xruiqi    时间: 2009-8-26 20:53
原帖由 flyfly310 于 2008-3-1 22:39 发表
我试了一下
可以对滚动条进行操作的
例如
browser("百度一下,你就知道").Page("百度搜索_adf").WebElement("新闻   网页   贴吧   知道   MP3").Drag 1,1700
前提是把webelement("新闻   网页   贴吧   知道    ...



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

作者: nimcok    时间: 2010-12-14 16:26
顶上来,高手帮忙看看如何处理
作者: js198388    时间: 2012-3-13 22:22
在WebEdit中的滚动条处理
看了前面的回复,我自己也遇到一个问题
[attach]77973[/attach] [attach]77974[/attach]
如上两个图,当滚动条在最下方的时候,点击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软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2