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吗?
展开
 我来答
tf日出
推荐于2016-02-12 · TA获得超过1076个赞
知道小有建树答主
回答量:648
采纳率:0%
帮助的人:249万
展开全部
先查看你的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。
更多追问追答
追问

额,这部分没问题了,就是进去填表,用遍历的方法一直提示错误438,但我反复比较,没看出哪写错了啊。

比如这两个,无论我怎么赋值,要么没反映,要么就提示对象不可用之类的

 

是因为框架问题吗?比如我的操作都发生在框架1上,但我要的结果,实际都在框架2上?

追答
应该是你的代码调用了并不存在的属性,这个需要你的代码以及你要处理的那个HTML的文档才好分析是什么原因。
另外,你上的图片中的两个INPUT控件都有id和name啊?
金山毒霸
2024-10-31 广告
电脑在启动游戏或软件的时候,桌面弹出错误提示框“0xc0000094”,应该怎么办?电脑报错,很大可能是因为某些DLL文件出现了异常,比如感染了病毒、DLL文件丢失等。解决方法如下:一、 手动解决方法1、先确定电脑操作系统是多少位的,现在的... 点击进入详情页
本回答由金山毒霸提供
瑞安阿芳
2013-05-10 · TA获得超过1946个赞
知道小有建树答主
回答量:749
采纳率:100%
帮助的人:884万
展开全部

可以用遍历的方法,下面给一小段代码,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错误。顺便问一下,你是何众芳?
追答
跟你一样,也是瑞安的。
不知道你用什么方法去遍历的,另外你这里还有框架的问题。
你最好将这个页面保存下来,再附件上传到这里,这样也好让大家研究。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱栀竹的人
2013-05-20 · TA获得超过1352个赞
知道大有可为答主
回答量:1743
采纳率:0%
帮助的人:977万
展开全部
你岩码简查看一下源代码,看看名录粗裤维护,法模判人单位维护点击后调用的函数,直接执行函数即可...
例如:WB.Document.parentWindow.execScript "showEnInfoInMap()"
wb是webbrowser控件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友100e42b4b
2013-05-13 · TA获得超过1829个赞
知道小有建树答主
回答量:3429
采纳率:52%
帮助的人:790万
展开全部
用 网页自动操作通用工具,自动获取无ID元素
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式