很难到达蓝线以赋予它一个值(这是一个文本框):
这是我当前尝试达到的目标-代码返回了典型的Run-time error '91': Object variable or With block variable not set
IE.Document.GetElementById("main"). _
GetElementsByTagName("div")(0). _
GetElementsByTagName("div")(0). _
GetElementsByTagName("div")(0). _
GetElementsByTagName("table")(0). _
GetElementsByTagName("tbody")(0). _
GetElementsByTagName("tr")(0). _
GetElementsByTagName("td")(0). _
GetElementsByClassName("textbox125 PatientID")(0).Value = patientid
自从我完成屏幕抓取以来已经有一段时间了,我猜我那里有一个额外的标签名称,或者我在其中一个标签的商品编号上有误...而且在有人问之前,我不太喜欢查询选择器,我更喜欢这样写:)。
答案 0 :(得分:3)
您应该可以使用:
ie.document.querySelector("#main .textbox125.PatientID")
这将定位main
的父ID和目标元素类.textbox125 PatientID
。由于不允许使用复合类名,因此需要额外的.
来删除空格。
如果您不想使用querySelector,仅使用可见的内容,则猜测将使用标签名称并进行以下操作:
ie.document.getElementsByTagName("input")(1)
记住:
您始终可以右键单击以获取元素上的基本选择器/ xpath
而且,使用的路径越长,方法就越脆弱。
更长的路径:
据我所见,您需要 second td
标签,即索引1,然后使用子input
标签重复该操作。这是基于可见的!确实需要实际的HTML进行测试,因为我对这样做的可行性不确定。
IE.Document.GetElementById("main"). _
GetElementsByTagName("div")(0). _
GetElementsByTagName("div")(0). _
GetElementsByTagName("div")(0). _
GetElementsByTagName("table")(0). _
GetElementsByTagName("tbody")(0). _
GetElementsByTagName("tr")(0). _
GetElementsByTagName("td")(1). _
GetElementsByTagName("input")(1).Value = patientid
答案 1 :(得分:1)
仅运行此:
session.generateLogout()
Sub TestMe()
Dim objApp As Object
Set objApp = CreateObject("InternetExplorer.Application")
objApp.Navigate "www.stackoverflow.com"
Do While objApp.readyState <> 4
DoEvents
Loop
Dim myDocument As Object: Set myDocument = objApp.Document
Dim myElement As Object: Set myElement = myDocument.getElementById("footer")
Stop
End Sub
行上停止。 Stop
,使其变为蓝色。