VB,自动登录已经完成了,但网页元素没有id,没有name,里面的自动点击怎么办?
PrivateSubWorkbook_Open()DimieAsInternetExplorerDimdocAsHTMLDocumentSetie=NewInternet...
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吗? 展开
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吗? 展开
4个回答
展开全部
先查看你的HTML源液谨文件,看看这是一个什么TAG,以及它的标签内有哪些参数。
然后,在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。
然后,在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。
更多追问追答
追问
追答
应该是你的代码调用了并不存在的属性,这个需要你的代码以及你要处理的那个HTML的文档才好分析是什么原因。
另外,你上的图片中的两个INPUT控件都有id和name啊?
金山毒霸
2024-10-31 广告
2024-10-31 广告
电脑在启动游戏或软件的时候,桌面弹出错误提示框“0xc0000094”,应该怎么办?电脑报错,很大可能是因为某些DLL文件出现了异常,比如感染了病毒、DLL文件丢失等。解决方法如下:一、 手动解决方法1、先确定电脑操作系统是多少位的,现在的...
点击进入详情页
本回答由金山毒霸提供
展开全部
可以用遍历的方法,下面给一小段代码,doc变量你自己定义吧。
Dim a As IHTMLElementCollection, ai As HTMLAnchorElement
Set 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控件。
例如:WB.Document.parentWindow.execScript "showEnInfoInMap()"
wb是webbrowser控件。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用 网页自动操作通用工具,自动获取无ID元素
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询