Board logo

标题: [问题求助] [已解決]VBS如何获取无id、无name型的网页控件? [打印本页]

作者: 328612167    时间: 2015-7-7 20:05     标题: [已解決]VBS如何获取无id、无name型的网页控件?

本帖最后由 pcl_test 于 2017-5-25 14:37 编辑

如何获取无id、无name型的网页控件
下面这个网站是一个例子
  1. Set ie=WScript.CreateObject("InternetExplorer.Application")
  2. ie.visible=true
  3. ie.navigate "https://www.cgtz.com/login.html"
  4. Do
  5. Wscript.Sleep 200
  6. Loop Until ie.ReadyState=4
  7. ie.document.getElementById("LoginForm_username").value="15672465439"
  8. ie.document.getElementById("LoginForm_password").value="123456"
  9. ie.document.getElementById("submit").click
  10. Do
  11. Wscript.Sleep 200
  12. Loop Until ie.ReadyState=4
  13. ie.navigate "https://www.cgtz.com/palace/index.html"
  14. Do
  15. Wscript.Sleep 200
  16. Loop Until ie.ReadyState=4
  17. '("签到赚积分")如何操作?
复制代码

作者: CrLf    时间: 2015-7-8 00:10

在 getElementsByTagName 的结果中逐个判断 value
或者在它的子节点中挑一个带 id 的,然后获取 parentNode 就行了
作者: ohar    时间: 2015-7-8 09:43

本帖最后由 ohar 于 2015-7-8 09:45 编辑

回复 2# CrLf

版主,不好意思啊,发重帖子了
  1. 'tj=ie.document.getElementsBytagname("签到赚积分")'定义tj的变量,getElementsBytagname获取标签名称
  2. 'tj.submit '提交
复制代码
是这样吗,但报警啊,昨天搞了一天,没搞定

还有,找不到ID啊
  1. <div class="leaguer_sign">
  2.                         <p>积分:<a href="/palace/integrallist.html" class="integralBalance">128</a></p>
  3.                         <p class="signNum" id="signNum">本月累计签到 7 天</p>
  4.                         <a class="sign" href="javascript:;">签到赚积分</a>
  5.                     </div>
复制代码

作者: ohar    时间: 2015-7-8 13:54

回复 2# CrLf
  1. For i=1 To ie.Document.all.length-1
  2. ie.Document.getElementsByTagName("a")(i).Click
  3. Next
复制代码
我所有的都点了,都没找到
作者: CrLf    时间: 2015-7-8 16:31

回复 5# ohar


    i 从 0 开始,另外 id="signNum" 不就是 id 吗?
作者: CrLf    时间: 2015-7-8 16:46

用 3 楼提供的账户登上去看了下,没找到楼主说的签到在哪里
作者: ohar    时间: 2015-7-8 16:51

回复 6# CrLf

我试过了,没用,不是这个ID,是要点“签到赚积分”
  1. ie.Document.getElementById("signNum").click
复制代码

作者: ohar    时间: 2015-7-8 16:55

回复 7# CrLf
作者: CrLf    时间: 2015-7-8 16:58

本帖最后由 CrLf 于 2015-7-8 17:03 编辑

回复 8# ohar


晕,当然不是这个了
这是相对定位,利用一个有 id 的节点去定位没有 id 或 name 的节点,例如
ie.Document.getElementById("signNum").parentNode.click()
或者找 class 为 leaguer_sign 的 div 也行
作者: CrLf    时间: 2015-7-8 17:03

回复 9# ohar


    还是没看到,源码里也搜不到
作者: ohar    时间: 2015-7-8 17:06

  1. <div class="leaguer_sign">
  2.                         <p>积分:<a href="/palace/integrallist.html" class="integralBalance">128</a></p>
  3.                         <p class="signNum" id="signNum">本月累计签到 7 天</p>
  4.                         <a class="sign" href="javascript:;">签到赚积分</a>
  5.                     </div>
复制代码
回复 11# CrLf
作者: CrLf    时间: 2015-7-8 17:10

回复 12# ohar


    那等其他坛友来试吧,反正我是看不到
作者: ohar    时间: 2015-7-8 17:16

回复 13# CrLf
作者: CrLf    时间: 2015-7-8 17:27

回复 14# ohar


试试,应该是这两个中的一个
document.getElementById('signNum').parentNode.getElementsByTagName('a')[0]
document.getElementById('signNum').parentNode.getElementsByTagName('a')[1]
作者: ohar    时间: 2015-7-8 17:49

本帖最后由 ohar 于 2015-7-8 17:53 编辑

好了好了,欧耶
谢谢 CrLf
作者: ohar    时间: 2015-7-8 18:04

  1. <div class="leaguer_sign">
  2.                         <p>积分:<a href="/palace/integrallist.html" class="integralBalance">175</a></p>
  3.                         <p class="signNum" id="signNum">本月累计签到 8 天</p>
  4.                         <a class="sign" href="javascript:;">签到赚积分</a>
  5.                     </div>
复制代码
回复 15# CrLf


    还有一个问题,怎么获得上面175这个值,它是个变数
作者: CrLf    时间: 2015-7-8 18:24

回复 17# ohar


    昂,ie.document.getElementById("signNum").parentNode.getElementsByTagName("a")(0).innerText
作者: ohar    时间: 2015-7-8 19:15

回复 18# CrLf

登录第二个账号时就出错,是怎么回事
  1. 'On Error Resume Next
  2. Dim ie,nam,pass
  3. Set ie=WScript.CreateObject("InternetExplorer.Application")
  4. j = 0
  5. nam = "15672465439"
  6. pass = "123456"
  7. Call aoie(nam,pass)
  8. nam = "15672465439"
  9. pass = "123456"
  10. Call aoie(nam,pass)
  11. nam = "15672465439"
  12. pass = "123456"
  13. Call aoie(nam,pass)
  14. WScript.Echo(j)
  15. Sub aoie(nam,pass)
  16. ie.navigate "https://www.cgtz.com/login.html"
  17. While ie.busy Or ie.readystate <> 4
  18. Wend
  19. ie.Document.getElementById("LoginForm_username").value=nam
  20. ie.Document.getElementById("LoginForm_password").value=pass
  21. ie.Document.getElementById("submit").click
  22. While ie.busy Or ie.readystate <> 4
  23. Wend
  24. ie.navigate "https://www.cgtz.com/palace/index.html"
  25. While ie.busy Or ie.readystate <> 4
  26. Wend
  27. ie.Document.getElementById("signNum").parentNode.getElementsByTagName("a")(1).click
  28. j = j + 1
  29. End Sub
复制代码

作者: CrLf    时间: 2015-7-8 19:41

回复 19# ohar


    你退出第一个号了吗
作者: ohar    时间: 2015-7-8 19:51

回复 20# CrLf

不会点退出,又没ID,又不一样
  1. <li class="jsWeixin">
  2.                 <i class="weixin"></i>微信<span>|</span>
  3.                 <div class="weixinImg"></div>
  4.             </li>
  5.             <li class="financialNew"><a href="/tech/27.html" target="_blank">理财资讯</a><span>|</span>
  6.                 <ul class="dropDown">
  7.                                                                 <li> <a href="/tech/27.html" target="_blank">p2p理财新闻</a></li>
  8.                                             <li> <a href="/tech/28.html" target="_blank">理财小知识</a></li>
  9.                                             <li> <a href="/tech/29.html" target="_blank">草根理财故事</a></li>
  10.                                             <li> <a href="/tech/30.html" target="_blank">个人理财入门</a></li>
  11.                                             <li> <a href="/tech/31.html" target="_blank">草根理财FAQ</a></li>
  12.                                     </ul>
  13.             </li>
  14.             <li><a href="/faq.html" target="_blank">帮助中心</a><span>|</span></li>
  15.                             <li>欢迎 <a href="/accouts.html" class="aGreen" rel="nofollow">
  16.                         186****6940</a> 来到草根投资!
  17.                     <a href="/logout.html" rel="nofollow">[退出]</a>
  18.                     <span>|</span></li>
  19.                     </ul>
复制代码

作者: ohar    时间: 2015-7-9 16:33

回复 20# CrLf


    查了昨晚下的资料,但无果,请大仙指教
作者: CrLf    时间: 2015-7-9 16:47

本帖最后由 CrLf 于 2015-7-9 17:23 编辑

回复 22# ohar


    加一句退出账户:
  1. ie.Navigate "https://www.cgtz.com/logout.html"
  2. While ie.busy Or ie.readystate <> 4
  3. Wend
复制代码

作者: ohar    时间: 2015-7-9 17:10

本帖最后由 ohar 于 2015-7-9 17:13 编辑

回复 23# CrLf


    https://www.cgtz.com/logoout.html 点这个没用的,我试过,不能退出

我是加在 end sub 之前
作者: CrLf    时间: 2015-7-9 17:22

本帖最后由 CrLf 于 2015-7-9 17:23 编辑

回复 24# ohar


    哦,多打一个o
作者: ohar    时间: 2015-7-9 17:46

回复 25# CrLf


    没懂
作者: CrLf    时间: 2015-7-9 18:43

回复 26# ohar


    https://www.cgtz.com/logout.html




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2