51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2277|回复: 13
打印 上一主题 下一主题

[原创] 正则表达式错误

[复制链接]
  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2007-5-14 15:25:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    按照QTP 的tutorial 上的作法:

    In the Active Screen, scroll up and highlight the date for the outbound flight, New York to San Francisco (12/29/2004). Right-click the highlighted string and select Insert Text Checkpoint. The Text Checkpoint Properties dialog box opens.



    In the Checked Text area, click the Constant Value Options button  . The Constant Value Options dialog box opens.

    In the Value box, replace the current date with [0-1][0-9]/[0-3][0-9]/200[0-9]. This instructs QuickTest to check that each character in the selected text matches the number-range format defined by the regular expression.

    Select the Regular expression check box. A message box prompts you to insert the backslash character before each special character.


    运行结果:
    [localimg=400,300]2[/localimg]

    不知道什么原因?

    本帖子中包含更多资源

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 2007-5-14 15:28:00 | 只看该作者
    结果
    Text Checkpoint "[0-1][0-9]/[0-3][0-9]/200[0-9]_2": Failed


    Date and Time: 2007-5-14 - 15:09:07



    Details

    Text Checkpoint: captured "7/31/2007" between to Frankfurt and SELECT , expected "[0-1][0-9]/[0-3][0-9]/200[0-9]"
    Regular Expression : ON
    Match case: OFF
    Exact match: OFF
    Ignore spaces: ON




    [ 本帖最后由 rivermen 于 2007-5-14 15:30 编辑 ]

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2007-5-14 15:59:09 | 只看该作者
    应该是参数化导致的错误,你把TOPORT 参数化了吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2007-5-14 16:27:13 | 只看该作者
    本人觉得你这个问题还是你的正则表达式写的不正确。如果是[0-1][0-9]/[0-3][0-9]/200[0-9], 那么 07/31/2007是符合的,但是7/31/2007就不符合了。可以看看[0-1]{0,1}[0-9]/[0-3]{0,1}[0-9]/200[0-9]。 我对这个也不熟悉,共同学习
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
     楼主| 发表于 2007-5-14 17:46:13 | 只看该作者
    问题解决了,诚如楼上所言。
    正则表达式应该好好学。
    另外:{0,1} 中间应该是英文的逗号
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2007-5-14 17:55:42 | 只看该作者
    请问{0,1}是什么意思?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
     楼主| 发表于 2007-5-14 18:05:38 | 只看该作者
    出现了新的问题:
    完整代码如下:
    '####################################################################################################################################
    '    描述性编程,事先把所有的IE窗口全部关闭    #
    '#############################################
    Dim WinIe,Ie,i,m
    Set WinIe=description.Create()
    WinIe("regexpwndtitle").value=" Microsoft Internet Explorer"   '所有页面的regexpwndtitle属性值都是" Microsoft Internet Explorer",也可以用其他属性
    Set Ie=desktop.ChildObjects(WinIe)
    m=Ie.count
    For i=1 to m
            Ie(i-1).close                 ' 0为最后打开的一个,可关闭打开的几个,,循环改成for i=1 to m
    Next
    '####################################################################################################################################

    systemutil.Run "iexplore","http://newtours.mercuryinteractive.com "
    Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").Sync
    'Browser("Welcome: Mercury Tours").Close
    Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("userName").Set "jie.wu"
    Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("password").SetSecure "463fe0d035b4df752e83110ce83e3cd8c3722b639b31"   '97210125
    Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").Image("Sign-In").Click 29,10
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebRadioGroup("tripType").Select "oneway"
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromPort").Select DataTable("departure", dtLocalSheet)
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromMonth").Select "February"
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromDay").Select "30"
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toPort").Select "Frankfurt"
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toPort").Select "London"
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toMonth").Select "July"
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toDay").Select "31"
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebRadioGroup("servClass").Select "Business"
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("airline").Select "Unified Airlines"
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").Image("findFlights").Click 69,9

    'Regular Expressions
    'Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").Check CheckPoint("2/30/2007")

    'Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").Check CheckPoint("[0-1][0-9]/[0-3][0-9]/200[0-9]")
    wait 5

    Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").Check CheckPoint("[0-1][0-9]/[0-3][0-9]/200[0-9]_2")
    wait 2

    Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").Output CheckPoint("271")


    Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").WebRadioGroup("outFlight").Select "Blue Skies Airlines$361$271$7:10"
    Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").WebRadioGroup("inFlight").Select "Blue Skies Airlines$631$273$14:30"
    Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").Image("reserveFlights").Click 45,11
    'Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").Check CheckPoint("Book a Flight: Mercury")

    'If Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").Check (CheckPoint("Book a Flight: Mercury")) then
    '        reporter.ReportEvent 0,"检查页面","页面正常"
    'else
    '   reporter.ReportEvent 1,"检查页面","页面不正常"
    'end if


    'Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").Check CheckPoint("Book a Flight: Mercury_3")

    Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passFirst0").Set "aaa"

    ' 添加一个bitmap CheckPoint
    'If Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury_2").Image("banner2").Check (CheckPoint("banner2_2")) then
    '        reporter.ReportEvent 0,"bitmap Checkpoint","successful"
    'else
    '        reporter.ReportEvent 1,"bitmap Checkpoint","fail"
    'end if


    ' 添加一个Table CheckPoint
    If Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebTable("Frankfurt to London").Check (CheckPoint("Frankfurt to London")) then
            reporter.ReportEvent 0,"Table checking","Table checking 正确!"
    else
            reporter.ReportEvent 1,"Table checking","Table checking 不正确!"
    end if

    '添加一个Object CheckPoint
    If Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passFirst0").Check (CheckPoint("passFirst0") ) then
             reporter.ReportEvent 0,"标准检查点","检查点数值正确!"
    else
            reporter.ReportEvent 1,"标准检查点","检查点数值不正确!"
    end if


    Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passLast0").Set "aa"

    '添加一个Output
    reporter.ReportEvent 2,"检查Output输出值","检查Output输出值"
    Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passLast0").Output CheckPoint("passLast0")
    '使用GetRoproperty方法获取属性值
    Dim value
    value= Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passLast0").GetROProperty ("value")
    reporter.ReportEvent 2,"属性输出值GetROProperty","输出值为:" & value

    Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("creditnumber").Set "123345"
    Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebList("pass.0.meal").Select "Bland"
    Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebList("cc_exp_dt_mn").Select "01"
    Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebList("cc_exp_dt_mn").Select "02"
    Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").Image("buyFlights").Click 72,14

    '检查点 Insert Text Checkpoint
    If Browser("Welcome: Mercury Tours").Page("Flight Confirmation: Mercury").Check (CheckPoint("Frankfurt")) then
             reporter.ReportEvent 0,"text Checkpoint","检查结果正确"
            else
             reporter.ReportEvent 1,"text Checkpoint","检查结果不正确"
    end if

    Browser("Welcome: Mercury Tours").Page("Flight Confirmation: Mercury").Image("Logout").Click


    Browser("Welcome: Mercury Tours").Page("Sign-on: Mercury Tours").Sync

    Browser("Welcome: Mercury Tours").Close






    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromPort").Select DataTable("departure", dtLocalSheet)
    参数化,参数一共3行,可是,后面两行都会check失败,称没有抓到相关文本

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
     楼主| 发表于 2007-5-15 12:08:26 | 只看该作者
    自己顶,召唤高手现身
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2007-5-16 15:59:29 | 只看该作者

    回复 #6 19thangel 的帖子

    [0-1]{0,1},符合[0-1]的出现的次数 0次或则1次,如果没有,就应该是必须出现一次[0-1]中的一个
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2007-5-16 16:30:31 | 只看该作者
    在脚本里面发现 Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toPort").Select "Frankfurt"
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toPort").Select "London"

    这样的话,你的toport是London而不是Frankfurt,所以出现了上面的错误。可是很奇怪,为什么第一个iteration却没有错,不知道你的脚本是不是有所改变,就像checkpoint一样,脚本里面还是错的吗
    另外,请问'Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").Check CheckPoint("2/30/2007"),这里你用的standard checkpint 还是text checkpoint?

    [ 本帖最后由 zoeHuang 于 2007-5-16 16:37 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    11#
     楼主| 发表于 2007-5-16 17:12:33 | 只看该作者
    我确实toport 选的是“London”
    因为:
    Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromPort").Select DataTable("departure", dtLocalSheet)

    fromport选用的是 dataTable,分别是:
    Frankfurt
    New York
    Paris


    'Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").Check CheckPoint("2/30/2007")
    注释的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2007-5-16 17:26:02 | 只看该作者
    大概LZ测试的是
    RETURN
    London to Frankfurt                 5/15/2007  
    SELECT

    这里的日期

    Frankfurt参数化后条件变了,第一次是Frankfurt所以成功了,后两次则找不到条件了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    13#
     楼主| 发表于 2007-5-16 17:26:45 | 只看该作者
    我想我已经找到了错误的地方了:
    如果按照Tutorial所说的那样:

    在 Active Screen 中向上滚动,然后突出显示出发航班 New York to San Francisco (12/29/2004)。右键单击突出显示的字符串,然后选择“插入文本检查点”。将打开“文本检查点属性”对话框。


    肯定是会出错的。
    因为我用了参数化fromport,每一次航班的起点都是不一样的
    New York to San Francisco
    中New York 这个位置的值都是一直在变动的
    所以只有第一次是成功的。2,3次由于相应的字符串变动了,中间的日期当然找不到了。


    所以改变策略:
    采用standard checkpoint,检查“innertext” 这个值

    而不是像Tutorial那样“插入文本检查点”。

    其实就是那么简单。
    尽信书不如无书......


    我把脚本发上来,可以比照
    Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").WebElement("2/30/2007").Check CheckPoint("2/30/2007_2")
    和他下面的注释的那句
    'Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").Check CheckPoint("[0-1][0-9]/[0-3][0-9]/200[0-9]_2")

    may it be helpful......

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2007-5-16 17:51:17 | 只看该作者

    回复 #13 rivermen 的帖子

    位置变换不会造成text checkpoint的失败的,失败是因为 你设置the text before and after it 变化了,以致于找不到。QTP text checkpoint,不是靠位置查找的。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-17 16:30 , Processed in 0.080803 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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