51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7563|回复: 27
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-12-25 16:11:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
比如在百度输入“国家”   下拉菜单就显示了好多包含此二字的搜索条目   如何把这些东西搞定啊
Object Spy 也弄不到值     low level  and analog 也不行

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

使用道具 举报

该用户从未签到

28#
发表于 2008-1-10 17:40:28 | 只看该作者

回复 26# 的帖子

你问的问题大家都答得那么积极,你说解决了怎么不把方法拿出来共享一下啊,呵呵

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

[ 本帖最后由 mythxhg 于 2008-1-10 17:45 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

27#
发表于 2008-1-10 16:58:25 | 只看该作者
再请教问下,怎么点击如 19楼 图片中都 “关闭” 按钮
希望高手再指点下
回复 支持 反对

使用道具 举报

该用户从未签到

26#
 楼主| 发表于 2008-1-10 16:57:20 | 只看该作者

一般网站好像是缓存,google suggest的才是服务端经过处理的动态显示

还有下拉菜单中  那个搜索结果的显示数量也是会不断变化的
好像google确实牛啊
我现在解决了  但开始真的觉得束手
我也刚工作   这里高手不少  多指教
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2008-1-8 18:02:16 | 只看该作者
同意楼上的说法.
其实没有想象中的那么难.
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2008-1-8 17:40:49 | 只看该作者
BAIDU??

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

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

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

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

不知道我有没抓错,各位也可以试试
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-8-25 10:16
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    23#
    发表于 2008-1-8 17:00:40 | 只看该作者
    不错  看了这么久  没有明白是什么意思
    不好意思啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    22#
    发表于 2008-1-8 13:28:56 | 只看该作者

    回复 14# 的帖子

    呵呵 我想大家有点误会了,我只是觉得楼主当时的问题不是很清晰,想了解他的用意而已。
    楼主后面的脚本感觉可行,找个时间试试。
    又学习了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    21#
     楼主| 发表于 2008-1-7 18:42:12 | 只看该作者

    还不成熟

    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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
     楼主| 发表于 2008-1-7 11:28:14 | 只看该作者

    本来我就是在google suggest上遇到的问题 所以想看Baidu的功能如何

    现在看到高人的一些方法了   谢谢啊
    我也有一些方法  还在完善中
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2007-12-29 17:35:54 | 只看该作者
    原帖由 jinsen 于 2007-12-26 15:09 发表
    百度的那个是window->WinListView,我用SPY抓到的,不过我添加不进对象库。

    摆渡现在还没有那个东西,你找到的估计不是了,他说的是那个自动弹出的(类似自动补齐功能)下拉列表。那个人估计是摆渡的,用的测试产品,所以可能正准备添加那个功能吧,反正我没在摆渡看到过。

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2007-12-29 17:32:49 | 只看该作者
    原帖由 scorix 于 2007-12-26 15:05 发表
    google的只是个WebElement而已,用SPY就能看到属性了,取值自然也就不难了
    百度的。。我肉眼都取不到


    能否共享一下你的google测试代码或者test文件?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2007-12-26 15:09:50 | 只看该作者
    百度的那个是window->WinListView,我用SPY抓到的,不过我添加不进对象库。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2007-12-26 15:05:09 | 只看该作者
    google的只是个WebElement而已,用SPY就能看到属性了,取值自然也就不难了
    百度的。。我肉眼都取不到
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2007-12-26 14:20:07 | 只看该作者
    原帖由 jackymail 于 2007-12-26 14:10 发表


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



    看帖子才知道百度的人原来这么牛啊,嘿嘿。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2007-12-26 14:10:00 | 只看该作者
    原帖由 ppent 于 2007-12-25 16:33 发表
    你想怎么搞定,实际意义是什么


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

    [ 本帖最后由 jackymail 于 2007-12-26 14:11 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2007-12-26 14:05:17 | 只看该作者
    原帖由 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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2007-12-26 13:40:58 | 只看该作者

    回复 9# 的帖子

    能介绍下 怎么搞定吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-12-26 13:37:06 | 只看该作者
    那就是一个输入框,为什么要从那里取值? 不明白?  不过,很有新意,呵呵,帮顶一个
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2007-12-26 13:17:03 | 只看该作者

    回复 9# 的帖子

    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-8 18:49 , Processed in 0.079144 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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