51Testing软件测试论坛

标题: 如何录制提取出在百度搜索框的下拉菜单中的对象?----好难啊-求教高人 [打印本页]

作者: 7444    时间: 2007-12-25 16:11
标题: 如何录制提取出在百度搜索框的下拉菜单中的对象?----好难啊-求教高人
比如在百度输入“国家”   下拉菜单就显示了好多包含此二字的搜索条目   如何把这些东西搞定啊
Object Spy 也弄不到值     low level  and analog 也不行

救急阿
作者: ppent    时间: 2007-12-25 16:33
你想怎么搞定,实际意义是什么
作者: 7444    时间: 2007-12-25 16:38
标题: 回复 2# 的帖子
你如果可以回答出来  可以来我们百度了   回答不出来就回去好好看书

我就是想把那些对象取出来   但是探测不到它的值  我的一切手段都没反应   录制不到
作者: 7444    时间: 2007-12-25 23:31
标题: 高人呢?
救命啊
作者: 风过无息    时间: 2007-12-26 09:09
下拉菜单?lz给张图啊,我输入国家,看不到你说的下拉菜单啊?
作者: 123czq    时间: 2007-12-26 09:33
我知道楼主的意思,像土豆啊,google啊一些的搜索引擎也有这样的功能,输入一些热门词语之后按空格,会显示出一些搭配的词语。貌似网速够快或词语够热门才能看到那些推荐匹配选项。
不过我觉得那个不是下拉框控件吧?抓起来确实很困难
作者: pxwcypx    时间: 2007-12-26 09:43
百度的是缓存,google之类的才是服务端经过处理的动态显示,反正我不会哈哈
作者: 美杜莎的瞳孔    时间: 2007-12-26 10:22
楼主指的下拉菜单是不是说以前有所有过的内容,现在重新输入会出现匹配的信息?
作者: jackymail    时间: 2007-12-26 12:50
我知道怎么做,ouou和google的我都做了一遍。
作者: lantianwei    时间: 2007-12-26 13:17
标题: 回复 9# 的帖子

作者: 5555    时间: 2007-12-26 13:37
那就是一个输入框,为什么要从那里取值? 不明白?  不过,很有新意,呵呵,帮顶一个
作者: three116    时间: 2007-12-26 13:40
标题: 回复 9# 的帖子
能介绍下 怎么搞定吗?
作者: jackymail    时间: 2007-12-26 14:05
原帖由 three116 于 2007-12-26 13:40 发表
能介绍下 怎么搞定吗?

这个是ouou的。google的跟这个有点区别
TestList "a"
Public Function TestList(cString)
SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe","dv.ouou.com","C:\Documents and Settings\Administrator","open"
Browser("视频-偶偶视频").Page("视频-偶偶视频").Sync
Browser("视频-偶偶视频").Page("视频-偶偶视频").WebEdit("textfield").Click

Set WshShell=CreateObject("Wscript.Shell")
WshShell.SendKeys cString

Set Desc=Description.Create()
Desc("micclass").value="WebElement"
Desc("class").value="autoMouseout"
Set Objs=Browser("视频-偶偶视频").Page("视频-偶偶视频").ChildObjects(Desc)

'Objs(3).click
For i=0 to Objs.count-1
        Msgbox Objs(i).ToString
Next
Set WshShell=Nothing

End Function
作者: jackymail    时间: 2007-12-26 14:10
原帖由 ppent 于 2007-12-25 16:33 发表
你想怎么搞定,实际意义是什么


PPent sir, 你在求教问题的人那里申请要去baidu工作吗?如果就因为这个问题遇到障碍,我可以把这个问题总结的方案发送给你。

[ 本帖最后由 jackymail 于 2007-12-26 14:11 编辑 ]
作者: gy21st    时间: 2007-12-26 14:20
原帖由 jackymail 于 2007-12-26 14:10 发表


PPent sir, 你在求教问题的人那里申请要去baidu工作吗?如果就因为这个问题遇到障碍,我可以把这个问题总结的方案发送给你。



看帖子才知道百度的人原来这么牛啊,嘿嘿。
作者: scorix    时间: 2007-12-26 15:05
google的只是个WebElement而已,用SPY就能看到属性了,取值自然也就不难了
百度的。。我肉眼都取不到
作者: jinsen    时间: 2007-12-26 15:09
百度的那个是window->WinListView,我用SPY抓到的,不过我添加不进对象库。
作者: jackymail    时间: 2007-12-29 17:32
原帖由 scorix 于 2007-12-26 15:05 发表
google的只是个WebElement而已,用SPY就能看到属性了,取值自然也就不难了
百度的。。我肉眼都取不到


能否共享一下你的google测试代码或者test文件?
作者: jackymail    时间: 2007-12-29 17:35
原帖由 jinsen 于 2007-12-26 15:09 发表
百度的那个是window->WinListView,我用SPY抓到的,不过我添加不进对象库。

摆渡现在还没有那个东西,你找到的估计不是了,他说的是那个自动弹出的(类似自动补齐功能)下拉列表。那个人估计是摆渡的,用的测试产品,所以可能正准备添加那个功能吧,反正我没在摆渡看到过。
作者: 7444    时间: 2008-1-7 11:28
标题: 本来我就是在google suggest上遇到的问题 所以想看Baidu的功能如何
现在看到高人的一些方法了   谢谢啊
我也有一些方法  还在完善中
作者: 7444    时间: 2008-1-7 18:42
标题: 还不成熟
SystemUtil.Run "C:\Program Files\Internet Explorer\IEXPLORE.EXE","http://www.google.com/webhp?complete=1&hl=en"


Browser("Google").Page("Google").WebEdit("q").Object.focus

wait 3
Dim tb,rcount

search = "Quick"   'any string you want to search...
arrsearch = SplitString(search)

For i = 0 to UBound(arrsearch) - 1
Browser("Google").Page("Google").WebEdit("q").Set arrsearch(i)
Browser("Google").Page("Google").WebEdit("q").FireEvent "onkeyup"
Wait(1)

Next

Dim value1,value2
rcount=Browser("Google").Page("Google").WebTable("index:=1").RowCount

For i=0 to rcount-1
value1=Browser("Google").Page("Google").WebTable("index:=1").GetCellData(i,1)
value2=Browser("Google").Page("Google").WebTable("index:=1").GetCellData(i,2)

DataTable.Value(1,1)=value1
DataTable.Value(2,1)=value2
' ------------------------------------------
' please init DataTable first....
'-------------------------------------------
DataTable.SetCurrentRow(i+1)
Next

Function SplitString(str)
  Dim arr()
'search = "Hello world"
length = len(str)
Redim arr(length)
        For intCounter = 0 to UBound(arr) - 1
arr(intCounter) = Mid(search, 1,intCounter + 1)
Next
SplitString = arr
End Function
作者: ppent    时间: 2008-1-8 13:28
标题: 回复 14# 的帖子
呵呵 我想大家有点误会了,我只是觉得楼主当时的问题不是很清晰,想了解他的用意而已。
楼主后面的脚本感觉可行,找个时间试试。
又学习了。
作者: tiger_86    时间: 2008-1-8 17:00
不错  看了这么久  没有明白是什么意思
不好意思啊
作者: mythxhg    时间: 2008-1-8 17:40
BAIDU??

就是一个脚本用了正则表达式动态生成的下拉列表.

用VC++的SPY++可以抓到一个Auto-Suggest Dropdown对象下的SysListView32

这些对象就象Desktop上的右键菜单对象一样,没有对应事件激活时是不显示的,但是这些对象已经存在,而这个baidu的下拉则是由脚本的正则表达式动态生成的,所以,当你输入a激活了下拉之后再用b激活下拉,可以发现对象已经不同了.

不过消息是LVM类型的,WIN API跨进程访问的话需要注入获取权限了.

不知道我有没抓错,各位也可以试试
作者: 板砖    时间: 2008-1-8 18:02
同意楼上的说法.
其实没有想象中的那么难.
作者: 7444    时间: 2008-1-10 16:57
标题: 一般网站好像是缓存,google suggest的才是服务端经过处理的动态显示
还有下拉菜单中  那个搜索结果的显示数量也是会不断变化的
好像google确实牛啊
我现在解决了  但开始真的觉得束手
我也刚工作   这里高手不少  多指教
作者: three116    时间: 2008-1-10 16:58
再请教问下,怎么点击如 19楼 图片中都 “关闭” 按钮
希望高手再指点下
作者: mythxhg    时间: 2008-1-10 17:40
标题: 回复 26# 的帖子
你问的问题大家都答得那么积极,你说解决了怎么不把方法拿出来共享一下啊,呵呵

PS:我刚看了一下那个页面内的脚本代码,应该是象楼主说的根据本地缓存生成的,而不是根据内部脚本.这个生成的工作应该是由系统来完成,象EXPLORER上的地址栏一样,不过它是根据本地数据.它不是XML的数据类型,你要处理的实际上是系统的生成的SysListView32对象,系统对这些文本框都会产生这类型的下拉对象.

[ 本帖最后由 mythxhg 于 2008-1-10 17:45 编辑 ]




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2