VB,自动登录已经完成了,但网页元素没有id,没有name,里面的自动点击怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB,自动登录已经完成了,但网页元素没有id,没有name,里面的自动点击怎么办?相关的知识,希望对你有一定的参考价值。
Private Sub Workbook_Open()
Dim ie As InternetExplorer Dim doc As htmlDocument Set ie = New InternetExplorer ie.navigate "http://10.33.113.10/tjmlk/Modules/%e7%99%bb%e5%bd%95/%e7%99%bb%e5%bd%95.aspx?E=%e7%99%bb%e5%bd%95" ie.Visible = True
Do DoEvents Loop Until ie.readyState = 4 '在网页没有完全下载之前,VB 转让控制权 If ie.LocationURL = "http://10.33.113.10/tjmlk/main/index.aspx" Then Exit Sub '如果已经登录,退出程序
Set doc = ie.document doc.getElementById("edtUserName").Value = "XXX" doc.getElementById("edtPassword").Value = "XXX" doc.getElementById("btnOk").Click Set doc = Nothing Set doc = ie.document Set ie = Nothing
End Sub
这是自动登录的,登录内网的。
后面怎么写。。
要点名录维护,然后点法人单位维护
名录维护的ID、name都没有。得用tagname遍历吗?如何遍历?tagname是A吗?
然后,在Set doc = ie.document后一句设断点,运行程序在该点中断时,把doc添加进监视,查看DOC下面DOC.all下面的ITEM x,找到你刚刚看的那个TAG,看看X是多少就是all的第x个元素,因为调用时是从0开始,所以要把x-1,然后就可以调用了。
DOC.body.all(x-1).click
如果你的doc经常会变化,也就是如果那个X经常变化,也可以在body下面的childNodes或children下面继续查找比较固定的子节点,并找到一个比较稳定的路径来调用这个控件。如果这个路径上有子节点有ID或name,就可以用你刚刚的方法直接先找到该子节点,并以此为基础再往下找到你要的那个TAG。
当然你也可以用“for each 变量 in...”来历遍doc.all或childNodes。追问
额,这部分没问题了,就是进去填表,用遍历的方法一直提示错误438,但我反复比较,没看出哪写错了啊。
比如这两个,无论我怎么赋值,要么没反映,要么就提示对象不可用之类的
是因为框架问题吗?比如我的操作都发生在框架1上,但我要的结果,实际都在框架2上?
应该是你的代码调用了并不存在的属性,这个需要你的代码以及你要处理的那个HTML的文档才好分析是什么原因。
另外,你上的图片中的两个INPUT控件都有id和name啊?
- -!每次打开都随机产生的
参考技术A可以用遍历的方法,下面给一小段代码,doc变量你自己定义吧。
Dim a As IHTMLElementCollection, ai As HTMLAnchorElementSet a = doc.getElementsByTagName("A")
For Each ai In a
If InStr(1, ai.innerHTML, "名录维护", vbTextCompare) > 0 Then
ai.Click
Exit For
End If
Next
再点法人单位维护,也可以这样做。
这部分我自己搞好了,现在的问题是我进去填表,一样没有name,id,用遍历又提示438错误。顺便问一下,你是何众芳?
追答跟你一样,也是瑞安的。
不知道你用什么方法去遍历的,另外你这里还有框架的问题。
你最好将这个页面保存下来,再附件上传到这里,这样也好让大家研究。
百度只能图片形式上传的
搞得差不多了,不过是用楼上的方法。不好意思额。
例如:WB.Document.parentWindow.execScript "showEnInfoInMap()"
wb是webbrowser控件。 参考技术C 用 网页自动操作通用工具,自动获取无ID元素
网页怎么自动记住密码?
以前在网站上面登陆用户的时候有个提示,可以让电脑记住密码的。可是现在没有了,不过只有用户名可以选,选好之后就自动生成密码了,每次登陆都要选用户名才能登陆。是不是因为用户名太多了才会这样啊?
我现在想进入百度知道时就直接登陆我的帐号请问有办法吗?
是在浏览器里面点工具吧,然后在点内容再点自动完成。可是里面所有的我都打了勾了呀,还是没有。不在知道问题出在哪了。
注:此操作可会清除浏览器上保存的所有密码,建议慎重。 参考技术A
网页能够保存密码是因为第一次登陆的时候会保存“用户名和密码”信息,只要下次登陆不删除即可。
第一步:点击浏览器右上角的设置按钮,进入“Internet选项界面”。
第二步:选择“删除”按钮,将弹出框中“密码”前面的勾去掉,之后点击“确定”即可完成设置。
备注:一般“密码”都是有cookie失效时间,也就是一段时间不访问这个用户,之后会自动失效,这个没办法解决,只能是用户重新输入密码。
将“自运完成功能应用于”用户名、密码勾选上。本回答被提问者采纳 参考技术C 桌面上ie图标点右键--属性--连接--自动完成--表单上的用户名和密码--打上勾,确定! 参考技术D
你好,让网页记住密码是极不安全的做法。
KeePass下载和使用图解
其实可以用开源专业的密码软件KeePass来管理密码,非常安全。它也可以自动登录网页,这样就不用网页记住密码了。
以上是关于VB,自动登录已经完成了,但网页元素没有id,没有name,里面的自动点击怎么办?的主要内容,如果未能解决你的问题,请参考以下文章
怎么用VBS脚本点击网页中的某个按钮(这个按钮没有元素ID)