问题摘要
- 这是一个很长的问题,因为我希望提供我尝试的所有内容,让所有试图提供解决方案的人都更容易,所以请耐心等待 -
总的来说,我了解了一些使用Web浏览器控件自动登录网站的方法。我使用Chrome检查页面并找到元素名称,ID,标签等,然后尝试找到像文本框一样的特定控件,然后我可以将value属性设置为我想要的。这适用于大多数网站,但Chase's难倒。
首次尝试
以下是Chrome检查的页面:
突出显示的最后一行是用户名文本框,我打算设置的那个。
如果我使用这个循环遍历所有控件:
Dim theElementCollection As HtmlElementCollection = webbrowser.Document.All
For Each curElement As HtmlElement In theElementCollection
If curElement.Id <> "" Or curElement.Name <> "" Then
MsgBox(curElement.Id & ":" & curElement.Name)
End If
Next
找到的唯一相关项目是 logonDialog (不是 userId 或 userId-input-field )。
第二次尝试
现在我可以在树中看到有一个层次结构,所以我尝试使用我发现的控件的.Children属性:
Dim logonDialog As HtmlElement = webbrowser.Document.GetElementById("logonDialog")
For i = 0 To logonDialog.Children.Count - 1
MsgBox(logonDialog.Children(i).Id & ":" & logonDialog.Children(i).Name & ":" & logonDialog.Children(i).TagName)
Next
这导致显示 logonbox ,因此很有希望......
现在,如果我在找到 logonbox 的代码下面尝试相同的方法:
Dim logonDialog As HtmlElement = webbrowser.Document.GetElementById("logonDialog")
Dim logonbox As HtmlElement = logonDialog.Children("logonbox")
MsgBox(logonbox.Id)
MsgBox(logonbox.Children.Count)
For i = 0 To logonbox.Children.Count - 1
MsgBox(logonbox.Children(i).Id & ":" & logonbox.Children(i).Name & ":" & logonbox.Children(i).TagName)
Next
它说 logonbox 没有孩子......所以我怎么能进一步下去?看看上面的图片,这是因为列表中的下一个“孩子”是“#document”吗?
第三次尝试
使用评论中建议的“iFrame”方法:
Dim logonbox As HtmlElement = logonDialog.Children("logonbox")
For Each element_ As HtmlElement In logonbox.Document.All
MsgBox(element_.Id & ":" & element_.Name)
Next
该列表与我在“First Attempt”中创建的列表相同
- 也许还有另一种完全不同的登录Chase的方式。这是我的最终目标,所以如果有人采用不同的方式,我也会对此持开放态度!