mmsw450 发表于 2013-1-28 14:12:05

回复 20# 四季草堂


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

推荐VBSEdit.蛮好用。

Notepad++用来格式化和阅读代码;很好使。

xajhuang 发表于 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

mmsw450 发表于 2013-1-28 21:19:26

回复 22# xajhuang
感谢 xajhuang兄 提供的方法;坛子里果然藏龙卧虎。

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

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






xajhuang 发表于 2013-1-29 09:52:40

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

想你的美 发表于 2013-1-29 12:22:40

支持哈

xiaoshi_2011 发表于 2013-1-29 14:29:59

顶一个

xiaoyouer 发表于 2013-1-29 15:26:25

回复 1# mmsw450


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

泰然 发表于 2013-1-29 15:58:23

呵呵,我也来做一个,对象名称有调整.另外脚本从完成登录,点开车票预订界面后开始执行.解决了输入的问题Dim strFrom, strTo, strDate
strFrom = inputBox("出发地")
strTo = inputBox("目的地")
strDate = inputBox("出发日期,格式如2013-01-01")
'strFrom = "上海"
'strTo = "北京"
'strDate = "2013-02-02"
Browser("12306").Page("NewOrder").Frame("main").WebEdit("FromCity").Set ""
Browser("12306").Page("NewOrder").Frame("main").WebEdit("FromCity").Click 1,1
Set oClp = CreateObject("Mercury.Clipboard")
oClp.Clear
oClp.SetText strFrom
Set oWsh = CreateObject("Wscript.shell")
oWsh.SendKeys "^v"
Set oCityList = Browser("12306").Page("NewOrder").Frame("main").Object.getElementById("panel_cities").ChildNodes
For i = 0 to oCityList.length -1
        If oCityList(i).ChildNodes(0).innertext=strFrom then
                For j = 0 to i-1
                        oWsh.SendKeys "{DOWN}"
                Next
                oWsh.SendKeys "{ENTER}"
                Exit for
        end if
Next
Set oCityList = Nothing

Browser("12306").Page("NewOrder").Frame("main").WebEdit("ToCity").Set ""
Browser("12306").Page("NewOrder").Frame("main").WebEdit("ToCity").Click 1,1
oClp.Clear
oClp.SetText strTo
oWsh.SendKeys "^v"
wait 1
Set oCityList = Browser("12306").Page("NewOrder").Frame("main").Object.getElementById("panel_cities").ChildNodes
For i = 0 to oCityList.length -1
        print oCityList(i).ChildNodes(0).innerhtml
        If oCityList(i).ChildNodes(0).innertext=strTo then
                print i
                For j = 0 to i-1
                        oWsh.SendKeys "{DOWN}"
                Next
                wait 1
                oWsh.SendKeys "{ENTER}"
                Exit for
        end if
Next
Set oCityList = Nothing
Set oWsh = Nothing
Set oClp = Nothing

Browser("12306").Page("NewOrder").Frame("main").WebEdit("TrainDate").Object.innerText = strDate
Browser("12306").Page("NewOrder").Frame("main").WebButton("Select").Click

liurenhui 发表于 2013-1-29 17:19:06

学以致用,,哈哈哈:victory:

104509426 发表于 2013-1-29 21:09:57

楼上全是高手,能否请教如何提交订单呢,提交订单前必须要输入验证码?那些抢票软件是如何做到啊,求解啊

mmsw450 发表于 2013-1-30 09:19:39

回复 28# 泰然


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

   呆会试试你这部分代码。

mmsw450 发表于 2013-1-30 10:16:44

回复 27# xiaoyouer


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

coolwind09 发表于 2013-1-30 14:24:23


绝对是人才。百分之百的是人才啊···

hnhellen 发表于 2013-1-30 17:45:25

楼主学以致用,受教了

hnhellen 发表于 2013-1-30 17:46:30

不过我用QTP 到入不了文件 我用的是QTP 9.2 不知道是不是版本问题?

黑羽祭 发表于 2013-2-1 09:32:16

有点意思啊~

pl80601983 发表于 2013-2-1 09:38:28

学习与时俱进,真好.

seven_1987 发表于 2013-2-1 09:55:04

牛逼人物!:lol

mmsw450 发表于 2013-2-1 10:26:44

回复 36# 黑羽祭


    谢黑羽祭彭Sir 两位版主捧场指导。:lol

咖啡猫来啦 发表于 2013-2-2 13:43:22

{:3_79:}来学习一下
页: 1 [2] 3
查看完整版本: QTP版"12306订票助手"--支持刷票及自动预定