ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: liucqa

WebBrowser控件登录12306订票小助手--抓验证码图片、API关闭弹窗,更新0.53版

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-1-17 01:15 | 显示全部楼层
本帖已被收录到知识树中,索引项:网页交互
本帖最后由 xmyjk 于 2012-1-17 01:16 编辑

短消息什么都收到,忙,抽空看了下,登陆大概如下,因为系统1点-6点不可以登陆,凭印象做了下,明天再试看看

  1. Dim FLAG As Boolean
  2. Private Sub CommandButton1_Click()
  3.     Dim t As Single
  4.     With WebBrowser1
  5.         .Silent = True
  6.         .Navigate "https://dynamic.12306.cn/otsweb/main.jsp"
  7.         Do Until .ReadyState = READYSTATE_COMPLETE
  8.             DoEvents
  9.         Loop
  10.         t = Timer
  11.         On Error Resume Next
  12.         Do Until InStr(.Document.frames(0).Document.BODY.INNERTEXT, "忘记用户名/密码?") > 0 Or Timer > t + 8
  13.             DoEvents
  14.         Loop
  15.         On Error GoTo 0
  16.         If Timer < t + 8 Then
  17.             MsgBox "网页加载完毕!"
  18.             FLAG = True
  19.         Else
  20.             MsgBox "登陆超时!"
  21.             FLAG = False
  22.         End If
  23.     End With
  24. End Sub

  25. Private Sub LoginCbn_Click()
  26.     If FLAG = True Then
  27.         With WebBrowser1.Document.frames(0).Document
  28.             .all("loginUser.user_name").Value = userTbx.Value
  29.             .all("user.password").Value = PsdTbx.Value
  30.             .all("randCode").Value = RndcodeTbx.Value
  31.             .all("subLink").Click
  32.         End With
  33.     End If
  34. End Sub
复制代码



12306登录演示.rar

15.42 KB, 下载次数: 90

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-1-17 01:30 | 显示全部楼层
本帖最后由 liucqa 于 2012-1-17 01:58 编辑
xmyjk 发表于 2012-1-17 01:15
短消息什么都收到,忙,抽空看了下,登陆大概如下,因为系统1点-6点不可以登陆,凭印象做了下,明天再试看看 ...

我就没在WebBrowser1里面找到frames(0),用F8看Document里面的Frames是空的,不知道为啥,要不就不用post了

我不懂网页,但看源码估计loginforn表单是用js搞出来的

<script src="/otsweb/js/login.js?version=2.1" type="text/javascript"></script>
<div class="conWrap">
    <!--header -->

    <!--header end-->
    <!--con -->
    <div class="enter_w">
        <div class="enter_top">
            <div class="enter_left">
                <div class="enter_from">
                    <ul>
                        <li class="enter_logo"><img
                            src="/otsweb/images/enter_font1.jpg" /></li>
                        <form name="loginForm" id="loginForm" method="post" action="/otsweb/loginAction.do?method=login">

等网站人少的时候,我试试你的代码

点评

右键看到的源代码是初始的,并非JS脚本再次调整后的,用FIREFOX+FIREBUG吧,可以看到最终的网页文本。  发表于 2012-1-17 09:15

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-1-17 08:53 | 显示全部楼层
本帖最后由 liucqa 于 2012-1-17 13:37 编辑
xmyjk 发表于 2012-1-17 01:15
短消息什么都收到,忙,抽空看了下,登陆大概如下,因为系统1点-6点不可以登陆,凭印象做了下,明天再试看看 ...

测试了,你的代码可以登录。非常感谢

那么只剩最后一个问题了,为什么通过WB登录进12306,点击查询,始终说服务器忙,查询失败呢?其实服务器压根就没有进行查询,这个会与什么有关呢?(无论是程序Post还是submit,还是干脆人工输入点击登录,到查询都一样查询失败)


不是网站问题,我用ie从没这个现象

点评

我还是登录不上去,继续去忙了,查询失败会不会是网站自身的问题呢?  发表于 2012-1-17 10:50
现在买票的人太多了,我连登录都登录不上去。  发表于 2012-1-17 09:14

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-1-17 10:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我这里还行,耐心试十几次就能登录了

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-1-17 15:56 | 显示全部楼层
本帖最后由 liucqa 于 2012-1-17 15:57 编辑

为什么js脚本错误不能屏蔽呢?

点评

我这里正常呀,我能登录进去了,你是要查询哪个?  发表于 2012-1-17 17:31

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-1-17 18:55 | 显示全部楼层
本帖最后由 liucqa 于 2012-1-17 20:48 编辑

随便找个始发和终到站,点查询,会提示服务器忙,查询加载失败。有时候,会提示js脚本错误,然后就一直显示正在查询,请稍候。

加入计时器关闭IE提示窗口,但无法关闭JS脚本错误,有什么办法不让WB报告JS脚本错误呢?(别的错误不能屏蔽)

附件在48楼


TA的精华主题

TA的得分主题

 楼主| 发表于 2012-1-17 19:12 | 显示全部楼层
本帖最后由 liucqa 于 2012-1-17 20:27 编辑

怎样屏蔽js脚本错误?

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-1-17 20:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 liucqa 于 2012-1-18 01:08 编辑

12306 submit演示-计时器API版.rar (75.32 KB, 下载次数: 49)

如何屏蔽js脚本错误呢?

进入登录页面之后,如果已经登录,点击退出,会报js脚本错误。
进入订票页面,点击车票预订,也会报js脚本错误。

pDisp.Document.parentWindow.execScript "window.open = null;", "javaScript"  这句放到WebBrowser1_NavigateComplete2事件里面似乎没啥用


说一下,偶尔点击登录按钮,没看到计时器的提示信息(左上角的Timer计数),好像计时器没启动。其实计时器还是启动了,不过迅速又push了,估计原因可能和submit之后,WB返回结束状态过快有关。遇到这种情况,再点一次登录按钮即可。

点评

呃,你的附件,我运行得很正常,运行了好几次,没有你说的报脚本错误的类似状况也。。。  发表于 2012-1-17 22:11

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-1-17 22:24 | 显示全部楼层
本帖最后由 liucqa 于 2012-1-17 22:25 编辑

我的机器是ie9 ,和这个有关吗?  可以肯定的说在点击登录之前,网页状态是已经登录了,这个时候如果点退出,一定要报js错误的

点评

可能吧,没有用过IE9,等等,我录个动画给你,如果已经是登录状况了,我点退出,也是没有JS错误的。。。我IE8  发表于 2012-1-17 22:32

TA的精华主题

TA的得分主题

发表于 2012-1-17 22:35 | 显示全部楼层
本帖最后由 xmyjk 于 2012-1-17 23:00 编辑
liucqa 发表于 2012-1-17 22:24
我的机器是ie9 ,和这个有关吗?  可以肯定的说在点击登录之前,网页状态是已经登录了,这个时候如果点退出 ...

如图,完全正常,你试看看其他机器会不会。

隐私问题,图片删了。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 06:48 , Processed in 0.040855 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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