51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

楼主: mmsw450
打印 上一主题 下一主题

[原创] QTP版"12306订票助手"--支持刷票及自动预定

[复制链接]

该用户从未签到

21#
 楼主| 发表于 2013-1-28 14:12:05 | 只看该作者
回复 20# 四季草堂


    QTP自带的IDE为主,辅之以VBSEdit、NotePad++等;

  推荐VBSEdit.蛮好用。

  Notepad++  用来格式化和阅读代码;很好使。
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2013-1-28 17:26:52 | 只看该作者
楼主说的“输入始发,终点 及 日期;然后点击查询按钮;因为12306作了一点小手段,
'导致QTP自动输入后查不出来车次!此步骤建议手动输入!!”其实是可以自动化实现的:输入值之前先使“WebEdit”获得焦点,然后输入值,再模拟键盘{Enter}一下,即可查询了,代码如下:

Set wshShell = CreateObject("Wscript.Shell")
With Browser("micclass:=Browser").Page("micclass:=Page")
'点击“车票预定”链接
.Link("name:=车票预订","class:=text_yellow").Click
'输入始发,终点 及 日期;然后点击查询按钮;加了几个Hidden的input,根据输入的车站值自动变化)

.WebEdit("name:=orderRequest.from_station_name").Click 1,1
.WebEdit("name:=orderRequest.from_station_name").Object.classname="input_20txt"
.WebEdit("name:=orderRequest.from_station_name").Object.value=  "杭州"
wshShell.SendKeys "{ENTER}"  

.WebEdit("name:=orderRequest.to_station_name").Click 1,1
.WebEdit("name:=orderRequest.to_station_name").Object.classname="input_20txt"
.WebEdit("name:=orderRequest.to_station_name").Object.value= "上海"
wshShell.SendKeys "{ENTER}"  

.WebEdit("name:=orderRequest.train_date").Object.value = "2013-2-13"
wshShell.SendKeys "{ENTER}"  
.WebButton("class:=search_u").Click

End With
回复 支持 反对

使用道具 举报

该用户从未签到

23#
 楼主| 发表于 2013-1-28 21:19:26 | 只看该作者
回复 22# xajhuang
感谢 xajhuang兄 提供的方法;坛子里果然藏龙卧虎。

     我在之间曾试过,用QTP但无论输入值是什么,模拟回车时,都会变成“北京北”,如附图。
这让我略微郁闷了一把。所以才有附件代码中的注释。
不知道您那里为何能够正常,希望能加阁下QQ,交流一二。我Q:85645204

   手动输入的时候,是需要鼠标点一下悬浮提示站点,或者回车一下的。就会正常查询。
这时 ,它会把车站的站名和车站编号分别赋值给下面的FORM表单中。附图如下。
如果不执行回车过程,在FORM表单中,就没有这个编号值。查询的时候,结果也就为空。






本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2013-1-29 09:52:40 | 只看该作者
我也是QTP的学习者之一,正好自己也在用QTP写小助手订票。看到贵兄的帖子,想学习一下,才有了上述不成熟的建议,“藏龙卧虎”实在不敢当。
   你说的那两种现象我都碰到了:1、直接赋值后查询,12306会提示“您选择的日期不在预售期内”;2、赋值后回车,出发地和目的地都是“北京北”。
   后来参考了一下手工操作,发现要在赋值之前使文本框获得焦点,然后赋值,再回车,这样就可以查询了。不过这样做有个问题:回车后会默认选择下拉框的第一个值。比如出发地,输入“北京”,回车后,会把下拉框第一个值“北京北”赋值给“出发地”,虽然不影响最后的查询结果。但是这也终归是个问题,呵呵。
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2013-1-29 12:22:40 | 只看该作者
支持哈
回复 支持 反对

使用道具 举报

  • TA的每日心情
    擦汗
    2016-3-16 15:27
  • 签到天数: 25 天

    连续签到: 1 天

    [LV.4]测试营长

    26#
    发表于 2013-1-29 14:29:59 | 只看该作者
    顶一个
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    27#
    发表于 2013-1-29 15:26:25 | 只看该作者
    回复 1# mmsw450


        我对qtp只到了录制回放和简单设置参数级别,而且浏览器装了多个,要命的是装了360急速,所以ie一直不好用,现在又录制不了了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    28#
    发表于 2013-1-29 15:58:23 | 只看该作者
    呵呵,我也来做一个,对象名称有调整.另外脚本从完成登录,点开车票预订界面后开始执行.解决了输入的问题
    1. Dim strFrom, strTo, strDate
    2. strFrom = inputBox("出发地")
    3. strTo = inputBox("目的地")
    4. strDate = inputBox("出发日期,格式如2013-01-01")
    5. 'strFrom = "上海"
    6. 'strTo = "北京"
    7. 'strDate = "2013-02-02"
    8. Browser("12306").Page("NewOrder").Frame("main").WebEdit("FromCity").Set ""
    9. Browser("12306").Page("NewOrder").Frame("main").WebEdit("FromCity").Click 1,1
    10. Set oClp = CreateObject("Mercury.Clipboard")
    11. oClp.Clear
    12. oClp.SetText strFrom
    13. Set oWsh = CreateObject("Wscript.shell")
    14. oWsh.SendKeys "^v"
    15. Set oCityList = Browser("12306").Page("NewOrder").Frame("main").Object.getElementById("panel_cities").ChildNodes
    16. For i = 0 to oCityList.length -1
    17.         If oCityList(i).ChildNodes(0).innertext=strFrom then
    18.                 For j = 0 to i-1
    19.                         oWsh.SendKeys "{DOWN}"
    20.                 Next
    21.                 oWsh.SendKeys "{ENTER}"
    22.                 Exit for
    23.         end if
    24. Next
    25. Set oCityList = Nothing

    26. Browser("12306").Page("NewOrder").Frame("main").WebEdit("ToCity").Set ""
    27. Browser("12306").Page("NewOrder").Frame("main").WebEdit("ToCity").Click 1,1
    28. oClp.Clear
    29. oClp.SetText strTo
    30. oWsh.SendKeys "^v"
    31. wait 1
    32. Set oCityList = Browser("12306").Page("NewOrder").Frame("main").Object.getElementById("panel_cities").ChildNodes
    33. For i = 0 to oCityList.length -1
    34.         print oCityList(i).ChildNodes(0).innerhtml
    35.         If oCityList(i).ChildNodes(0).innertext=strTo then
    36.                 print i
    37.                 For j = 0 to i-1
    38.                         oWsh.SendKeys "{DOWN}"
    39.                 Next
    40.                 wait 1
    41.                 oWsh.SendKeys "{ENTER}"
    42.                 Exit for
    43.         end if
    44. Next
    45. Set oCityList = Nothing
    46. Set oWsh = Nothing
    47. Set oClp = Nothing

    48. Browser("12306").Page("NewOrder").Frame("main").WebEdit("TrainDate").Object.innerText = strDate
    49. Browser("12306").Page("NewOrder").Frame("main").WebButton("Select").Click
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-9-14 16:53
  • 签到天数: 27 天

    连续签到: 1 天

    [LV.4]测试营长

    29#
    发表于 2013-1-29 17:19:06 | 只看该作者
    学以致用,,哈哈哈
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    30#
    发表于 2013-1-29 21:09:57 | 只看该作者
    楼上全是高手,能否请教如何提交订单呢,提交订单前必须要输入验证码?那些抢票软件是如何做到啊,求解啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    31#
     楼主| 发表于 2013-1-30 09:19:39 | 只看该作者
    回复 28# 泰然


        泰然兄居然利用了剪贴版;呵呵;有想法。

       呆会试试你这部分代码。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32#
     楼主| 发表于 2013-1-30 10:16:44 | 只看该作者
    回复 27# xiaoyouer


        QTP是利用BHOmanager插件驱动IE的、建议你把防火墙、杀软、助手啊,一些不常用IE插件都关闭或停用。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-23 11:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    33#
    发表于 2013-1-30 14:24:23 | 只看该作者

    1. 绝对是人才。百分之百的是人才啊···
    复制代码
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    34#
    发表于 2013-1-30 17:45:25 | 只看该作者
    楼主学以致用,受教了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35#
    发表于 2013-1-30 17:46:30 | 只看该作者
    不过我用QTP 到入不了文件 我用的是QTP 9.2 不知道是不是版本问题?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    36#
    发表于 2013-2-1 09:32:16 | 只看该作者
    有点意思啊~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37#
    发表于 2013-2-1 09:38:28 | 只看该作者
    学习与时俱进,真好.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    38#
    发表于 2013-2-1 09:55:04 | 只看该作者
    牛逼人物!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    39#
     楼主| 发表于 2013-2-1 10:26:44 | 只看该作者
    回复 36# 黑羽祭


        谢  黑羽祭  彭Sir 两位版主捧场指导。  
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2015-11-19 15:02
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    40#
    发表于 2013-2-2 13:43:22 | 只看该作者
    来学习一下
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-23 17:15 , Processed in 0.078436 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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