标题: [问题求助] [已解決]VBS如何获取无id、无name型的网页控件? [打印本页]
作者: 328612167 时间: 2015-7-7 20:05 标题: [已解決]VBS如何获取无id、无name型的网页控件?
本帖最后由 pcl_test 于 2017-5-25 14:37 编辑
如何获取无id、无name型的网页控件
下面这个网站是一个例子- Set ie=WScript.CreateObject("InternetExplorer.Application")
- ie.visible=true
- ie.navigate "https://www.cgtz.com/login.html"
-
-
- Do
- Wscript.Sleep 200
- Loop Until ie.ReadyState=4
-
-
- ie.document.getElementById("LoginForm_username").value="15672465439"
- ie.document.getElementById("LoginForm_password").value="123456"
- ie.document.getElementById("submit").click
-
-
- Do
- Wscript.Sleep 200
- Loop Until ie.ReadyState=4
-
-
- ie.navigate "https://www.cgtz.com/palace/index.html"
-
-
- Do
- Wscript.Sleep 200
- Loop Until ie.ReadyState=4
-
-
- '("签到赚积分")如何操作?
复制代码
作者: CrLf 时间: 2015-7-8 00:10
在 getElementsByTagName 的结果中逐个判断 value
或者在它的子节点中挑一个带 id 的,然后获取 parentNode 就行了
作者: ohar 时间: 2015-7-8 09:43
本帖最后由 ohar 于 2015-7-8 09:45 编辑
回复 2# CrLf
版主,不好意思啊,发重帖子了- 'tj=ie.document.getElementsBytagname("签到赚积分")'定义tj的变量,getElementsBytagname获取标签名称
- 'tj.submit '提交
复制代码
是这样吗,但报警啊,昨天搞了一天,没搞定
还有,找不到ID啊- <div class="leaguer_sign">
- <p>积分:<a href="/palace/integrallist.html" class="integralBalance">128</a></p>
- <p class="signNum" id="signNum">本月累计签到 7 天</p>
- <a class="sign" href="javascript:;">签到赚积分</a>
- </div>
复制代码
作者: ohar 时间: 2015-7-8 13:54
回复 2# CrLf - For i=1 To ie.Document.all.length-1
- ie.Document.getElementsByTagName("a")(i).Click
- 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,是要点“签到赚积分”- 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
- <div class="leaguer_sign">
- <p>积分:<a href="/palace/integrallist.html" class="integralBalance">128</a></p>
- <p class="signNum" id="signNum">本月累计签到 7 天</p>
- <a class="sign" href="javascript:;">签到赚积分</a>
- </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
- <div class="leaguer_sign">
- <p>积分:<a href="/palace/integrallist.html" class="integralBalance">175</a></p>
- <p class="signNum" id="signNum">本月累计签到 8 天</p>
- <a class="sign" href="javascript:;">签到赚积分</a>
- </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
登录第二个账号时就出错,是怎么回事- 'On Error Resume Next
- Dim ie,nam,pass
- Set ie=WScript.CreateObject("InternetExplorer.Application")
- j = 0
- nam = "15672465439"
- pass = "123456"
- Call aoie(nam,pass)
-
- nam = "15672465439"
- pass = "123456"
- Call aoie(nam,pass)
-
- nam = "15672465439"
- pass = "123456"
- Call aoie(nam,pass)
-
- WScript.Echo(j)
-
- Sub aoie(nam,pass)
-
- ie.navigate "https://www.cgtz.com/login.html"
-
- While ie.busy Or ie.readystate <> 4
- Wend
-
- ie.Document.getElementById("LoginForm_username").value=nam
- ie.Document.getElementById("LoginForm_password").value=pass
- ie.Document.getElementById("submit").click
-
- While ie.busy Or ie.readystate <> 4
- Wend
-
- ie.navigate "https://www.cgtz.com/palace/index.html"
-
- While ie.busy Or ie.readystate <> 4
- Wend
-
- ie.Document.getElementById("signNum").parentNode.getElementsByTagName("a")(1).click
- j = j + 1
- End Sub
复制代码
作者: CrLf 时间: 2015-7-8 19:41
回复 19# ohar
你退出第一个号了吗
作者: ohar 时间: 2015-7-8 19:51
回复 20# CrLf
不会点退出,又没ID,又不一样- <li class="jsWeixin">
- <i class="weixin"></i>微信<span>|</span>
- <div class="weixinImg"></div>
- </li>
- <li class="financialNew"><a href="/tech/27.html" target="_blank">理财资讯</a><span>|</span>
- <ul class="dropDown">
- <li> <a href="/tech/27.html" target="_blank">p2p理财新闻</a></li>
- <li> <a href="/tech/28.html" target="_blank">理财小知识</a></li>
- <li> <a href="/tech/29.html" target="_blank">草根理财故事</a></li>
- <li> <a href="/tech/30.html" target="_blank">个人理财入门</a></li>
- <li> <a href="/tech/31.html" target="_blank">草根理财FAQ</a></li>
- </ul>
- </li>
- <li><a href="/faq.html" target="_blank">帮助中心</a><span>|</span></li>
- <li>欢迎 <a href="/accouts.html" class="aGreen" rel="nofollow">
- 186****6940</a> 来到草根投资!
- <a href="/logout.html" rel="nofollow">[退出]</a>
- <span>|</span></li>
- </ul>
复制代码
作者: ohar 时间: 2015-7-9 16:33
回复 20# CrLf
查了昨晚下的资料,但无果,请大仙指教
作者: CrLf 时间: 2015-7-9 16:47
本帖最后由 CrLf 于 2015-7-9 17:23 编辑
回复 22# ohar
加一句退出账户:- ie.Navigate "https://www.cgtz.com/logout.html"
- While ie.busy Or ie.readystate <> 4
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |