51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2606|回复: 12
打印 上一主题 下一主题

[原创] 如何让下拉框中的数据参数化

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-3-16 18:19:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
每次都能选择下拉框中不同的数据,怎么做?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-3-16 19:22:06 | 只看该作者
参数化下拉框选项的两个方法
1.通过下拉框对应项的实际值查找
Browser("****").Page("****").WebList("****").Select "****”
将select“****”的值参数化,可以将下拉框中的每一个选项都写到数据表中

2.通过下拉框对应项的索引号查找
Browser("****").Page("****").WebList("****").Select "#"&IndexNum
比如说下拉框有5个选项
IndexNum = Int((5- 1 + 1) * Rnd + 1) 或 IndexNum = RandomNumber(1,5)
以上代码生成1到5之间的随机数,5是上界,1是下界。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-3-16 19:43:22 | 只看该作者
但我这个下拉框对应的语句是这样的:Browser("****").Page("****").WebElement("*****").Click,和楼上大哥说的不一样,这个怎么解决?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-3-16 20:13:23 | 只看该作者
如果是这样的话,你可以通过描述性编程来解决这个问题,即webelement("attributeName:=attributeValue")
思路是这样的:
1、将下拉框中的每一项都加入对象仓库
2、用一个数组保存下拉框每一项的属性描述字段"attributeName:=attributeValue"
3、最后通过Browser("****").Page(****).Webelement(arr(RandomNumver(0,arr.length-1))).click
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-3-16 23:08:49 | 只看该作者
前面应该有这样的贴子可以参考的
先获取下拉框下面值的总项数n,再取0到N-1之间的随机数m,下拉框的第一项的index值是0,2楼的是从1开始取的
然后再用object.select m 取值就行了

[ 本帖最后由 sidneylover 于 2007-3-16 23:13 编辑 ]
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2007-3-18 16:44:28 | 只看该作者
    不错, milo.jiang 和 sidneylover 说的方法值得借鉴和学习.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-3-19 10:15:24 | 只看该作者

    milo.jiang 说的不行

    我有一个树型页面
    树型结构是动态的
    树型每个结点就两个属性   其中一个属性是 innertext:=深圳公司
    我这样写的:
    Browser("公司").Window("切换公司 -- 网页对话框").Page("切换公司").Frame("ctl_iframe_show").WebElement("innertext:=深圳公司").Click

    根本就通过不了
    唉,大家帮忙解决问题最好自己先运行一下,看自己说的方法能不能通过
    我问了几个问题,解决的人一大堆,可是都不能真正解决问题,回帖帮忙不光要好心,还要能帮上忙啊,我说的是实话
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2007-3-20 09:37:05 | 只看该作者
    原帖由 sky-vid 于 2007-3-19 10:15 发表
    我有一个树型页面
    树型结构是动态的
    树型每个结点就两个属性   其中一个属性是 innertext:=深圳公司
    我这样写的:
    Browser("公司").Window("切换公司 -- 网页对话框").Page("切换 ...


    请 sky-vid  要理解各位朋友帮你的热心。因为没有看到你的测试系统和具体的测试对象,你也没有任何图片,别人只能根据你的描述和自己的经验来帮你解决问题了。别人无偿给你提供了几种解决方法,具体怎么写代码、怎么去解决问题,还要靠你自己去解决吧。你总不能依靠别人为你解决一切问题吧。再说,即使这些方法对你解决这个问题没有什么大的帮助,那以后说不定就解决了你别的问题呢。
    我理解你迫切希望问题得到解决的心情,但你更要有感谢的心情,热心的朋友给你提供了几种解决问题的方法,你连一句感谢的话都没有,还说什么“回帖帮忙不光要好心,还要能帮上忙啊,我说的是实话”,你不觉得自己的行为有点过分了吗?

    [ 本帖最后由 walker1020 于 2007-3-20 09:38 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2007-3-20 10:08:57 | 只看该作者

    回复 #7 sky-vid 的帖子

    树型结构是动态的
    树型每个结点就两个属性   其中一个属性是 innertext:=深圳公司
    ---------
    这是错的,不只两个属性
    通过SPY查看 然后把其他的属性添加进来

    对于你的问题  你可以获取下拉框的所有的选项的total number
    最后用一个随便获取的方法来实现你的要求

    最后多一句
    walker1020 说的对 在论坛的每一个人不管技术好坏
    但都是很热情的  即使有时候说错了
    都应该以一种讨论的心态来对待 而不是觉得大家都在帮干忙sdlkfj2
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2007-3-20 11:28:17 | 只看该作者

    随便大家怎么说,我只是觉得有时很无奈

    我自己的问题,都是我自己想办法解决的
    在论坛上,大家帮忙的心情我也理解,也很感谢
    只是,面对我每个回复中的解决办法,我都通通试过,可是,很遗憾,还是不能解决问题
    当你试过很多次,一次次的问题的答案都是无效的或者等我在论坛上转悠了半天,找到答案,然后试着用答案中的方法去解决,仍然无法通过却又花费了一整天时的心情是否很好??
    而且,不至一次这样~~sdlkfj8

    另外,我的树型问题已经解决,主要原因是我的树型控件不是微软自带的,是一个网页在后台合成的,我加上了"html tag:=TD"  属性后终于识别出来了

    所以属性只有上文中说得两个

    .WebElement("innerText:=\[\+\]" & DataTable("公司名",dtLocalsheet) ,"html tag:=TD").click  '有子节点的点击
    当前节点名 如 [+]深圳华为
    最末级节点名 如  总部

    解决代码贴出:
    set temp  = Browser("公司名").Window("选择公司 -- 网页对话框").Page("选择公司").Frame("ctl_iframe_show")
    Dim  i
    Dim  j
    j=CInt(DataTable("节点数",dtLocalsheet))
    '注意:节点数 需是阿拉伯数字  如 1  2   3 ,若表格中的级数不够,可以在表中增加列 ,如 节点数:6 ,则增加列  “_6级”
    with temp
    If .exist then
            If   j>1   Then
                    .WebElement("innerText:=\[\+\]" & DataTable("公司名",dtLocalsheet) ,"html tag:=TD").click
               If j>2Then
                             For i=2 to  j-1
                                      .WebElement("innerText:=\[\+\]" & DataTable("_" & i & "级",dtLocalsheet) ,"html tag:=TD").click
                             Next
               End If
              .WebElement("innerText:=" & DataTable("_" & j & "级",dtLocalsheet) ,"html tag:=TD").click
            else
                    .WebElement("innerText:=" & DataTable("公司名",dtLocalsheet) ,"html tag:=TD").click
            End If
    end if
    end with
    temp.WebButton("确 定").Click

    [ 本帖最后由 sky-vid 于 2007-3-20 11:38 编辑 ]

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-3-20 11:38:35 | 只看该作者
    请不要把论坛当作是救命稻草,这本来就是一个学习,探讨的地方
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2007-3-20 11:50:59 | 只看该作者

    不过,我还是要感谢milo.jiang,另(致两位版主)

    原帖由 milo.jiang 于 2007-3-16 20:13 发表
    如果是这样的话,你可以通过描述性编程来解决这个问题,即webelement("attributeName:=attributeValue")
    思路是这样的:
    1、将下拉框中的每一项都加入对象仓库
    2、用一个数组保存下拉框每一项的属性 ...



    虽然刚开始用他的方法没有解决,不过后来我的解决方法还是依照他的思路 用描述性编程来解决了问题。所以还是要谢谢milo.jiang。
    只是我把节点中仅有的2个属性都用上了 多属性识别 webelement("attributeName:=attributeValue","attributeName:=attributeValue",……)
    当然  属性值也可以取dtLocalSheet表中自定义的值
    我上面贴的代码里就有


    另外,我只是希望大家的回帖实用些,看清楚问题再回帖解决问题,而不是胡乱的回帖一气,这样51论坛的含金量才高。我的出发点希望两位版主明白,但是两位版主说的话我确实很费解。
    说实话,我不是老好人,不是谁回我的贴我就跑去说感谢的!谁说的话是认真思考了的,我都会由衷的感谢,对于没经过大脑的话,我是不会巴巴的跑去说3QU的

    最后,希望51论坛人气更望

    [ 本帖最后由 sky-vid 于 2007-3-20 13:03 编辑 ]
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-27 04:30 , Processed in 0.124255 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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