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-18 16:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:网页交互
受教了 最近也一直受困与弹出窗口和网页JS脚本
看了你们讨论的帖子 启发很大
感受到pDisp.Document.parentWindow.execScript "window.xxxx;", "javaScript"的神器之处 可以借用网页自身的js函数
弹出窗口正在研究代码中
谢谢

TA的精华主题

TA的得分主题

发表于 2012-1-18 16:14 | 显示全部楼层
Private Sub ClickMessageBox(ByVal phwnd As Long)
这条正适合我现在的情况
其实原来我是想直接找到弹出对话框确认后续的 get、post 网址 或者后续的JS函数 现在不用啦

TA的精华主题

TA的得分主题

发表于 2012-1-18 16:20 | 显示全部楼层
还有一个问题就是IE对象的 IE.ReadyState <> READYSTATE_COMPLETE问题 一般第一次可以使用 一旦submit或者跳转后ReadyState就无效了

这里难道只能重新set一下IE?

TA的精华主题

TA的得分主题

发表于 2012-1-18 16:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liucqa 发表于 2012-1-18 15:17
按F12快捷键调出IE开发者工具栏 >>> Script(脚本)选项卡 >>> 复制如下图代码到内容文本框中 >>>  点击 Ru ...

依据我的思路也写了个简易的,没有管证书加载那块,只写了登录的。
  1. Dim FLAG As Boolean
  2. Dim i&

  3. Private Sub LoginCbn_Click()
  4.     Dim T As Single, T1 As Single
  5.     If FLAG = True Then
  6.         With WebBrowser1.Document.frames(0).Document
  7.             .all("loginUser.user_name").Value = userTbx.Value
  8.             .all("user.password").Value = PsdTbx.Value
  9.             .all("randCode").Value = RndcodeTbx.Value
  10.             T1 = Timer
  11.             Do Until Timer > T1 + 30
  12.                 On Error GoTo ERRT
  13.                 .all("subLink").Click
  14.                 T = Timer
  15.                 Do Until Timer > T + 2
  16.                     DoEvents
  17.                 Loop
  18.             Loop
  19.         End With
  20.     End If
  21. ERRT:
  22.     If ERR.Number = 70 Then MsgBox "请更换验证码或已经登录成功了!": Exit Sub
  23. End Sub

  24. Private Sub UserForm_Activate()
  25.     Dim T As Single
  26.     With WebBrowser1
  27.         .Silent = True
  28.         .Navigate "https://dynamic.12306.cn/otsweb/main.jsp"
  29.         Do Until .ReadyState = READYSTATE_COMPLETE
  30.             DoEvents
  31.         Loop
  32.         T = Timer
  33.         On Error Resume Next
  34.         Do Until InStr(.Document.frames(0).Document.BODY.innertext, "忘记用户名/密码?") > 0 Or Timer > T + 8
  35.             DoEvents
  36.         Loop
  37.         On Error GoTo 0
  38.         If Timer < T + 8 Then
  39.             MsgBox "网页加载完毕!"
  40.             FLAG = True
  41.         Else
  42.             MsgBox "登陆超时!"
  43.             FLAG = False
  44.         End If
  45.     End With
  46. End Sub

  47. Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
  48.     If URL Like "*method=*" Then
  49.         i = i + 1
  50.         Label4.Caption = "提交第" & i - 1 & "次" & vbCrLf & URL
  51.         pDisp.Document.parentWindow.execScript "window.alert=null;"
  52.     End If
  53. End Sub
复制代码



12306xmyjk.rar

14.87 KB, 下载次数: 69

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-1-18 17:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
嗯,简单就是美。

顺便说一下,63楼的代码有点错误,我忘记处理验证码错误了,等晚上看看有没有时间改一个用计时器完整处理网页信息的版本

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-1-18 17:43 | 显示全部楼层
eyeshot 发表于 2012-1-18 16:20
还有一个问题就是IE对象的 IE.ReadyState  READYSTATE_COMPLETE问题 一般第一次可以使用 一旦submit或者跳转 ...

那个状态判断不好使,这就是为什么我的代码里面同时有 计时器和计数器的原因。IE自带的WB是个残缺不全的控件

点评

是呐,它就是易用,进阶以后,可以用其他改良版的WB控件。。  发表于 2012-1-19 09:12

TA的精华主题

TA的得分主题

发表于 2012-1-19 10:46 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-1-20 12:08 | 显示全部楼层
12306 submit提交-推荐IE8 v0.4.rar (119.72 KB, 下载次数: 89)

1月20日版正式出炉,更新如下:
1、支持获得验证码图片,哪个牛人给弄个OCR识别?
2、验证码输入4位自动登录
3、页面状态的监测更加完善(可以识别用户名、密码、验证码各种错误提示。在一些特定操作下,计时器偶尔会提前终止,务请淡定)
4、隐藏EXcel界面。

使用方法,打开窗体之后,输入用户名密码、验证码。然后耐心等登录(只要看着提示耐心输入验证码就行)。

TA的精华主题

TA的得分主题

发表于 2012-1-20 12:40 | 显示全部楼层
本帖最后由 xmyjk 于 2012-1-20 12:44 编辑
liucqa 发表于 2012-1-20 12:08
1月20日版正式出炉,更新如下:
1、支持获得验证码图片,哪个牛人给弄个OCR识别?
2、验证码输入4位自 ...
程序很不错

好像有点不稳定,密码还没输完就光标就跑掉验证码去了,好像验证码换了,程序还在不停的登录。

就是感觉有点异步,然后有点控制不住。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-1-20 12:46 | 显示全部楼层
xmyjk 发表于 2012-1-20 12:40
好像有点不稳定,密码还没输完就光标就跑掉验证码去了,好像验证码换了,程序还在不停的登录。

程序很 ...

哦,忘记说了

输入顺序是先输入用户名和密码。然后再输入验证码。
否则验证码检测到有4位,且密码用户名不为空,就开始登录了。

验证码换了还在登录是因为API定时器先检测的信息是用户多,页面如果在反馈用户多的提示,程序是不去检测验证码错误的。耐心等不反馈用户多的时候,验证码错误就能够检测到了。

第二个问题我研究一下
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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