如何在vb.net网页浏览器中按下按钮
问题描述:
您好,我正在开发一个简单的帐户菜单,通过网页浏览器登录蒸汽。我正在尝试在该人物上进行按钮自动登录。我可以让按钮自动填充密码和用户名,但提交按钮不起作用。如何在vb.net网页浏览器中按下按钮
这里是链接到蒸汽的登录:Here
下面是按钮的元件图。还请注意,它看起来像分支可能是某种事件?
我有点难以接近这一点。有没有一种方法可以使用Web控制台以这种方式提交?以下是我走到这一步:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
WebBrowser1.ScriptErrorsSuppressed = True
WebBrowser1.Document.GetElementById("input_username").SetAttribute("value", TextBox1.Text)
WebBrowser1.Document.GetElementById("input_password").SetAttribute("value", TextBox2.Text)
WebBrowser1.Document.All("login_btn_signin").InvokeMember("click")
End Sub
答
检查图像后妥善我注意到你点击了错误的元素。 <div id="login_btn_signin">
元素只是一个容器,并没有做任何事情。您应该点击底层的<button>
元素。
由于按钮本身没有一个ID,你将不得不使用一种变通方法:
'Get the "login_btn_signin" parent/container div.
Dim LoginButtonContainer As HtmlElement = WebBrowser1.Document.GetElementById("login_btn_signin")
'Get the first found <button> element in the container div.
Dim LoginButton As HtmlElement = LoginButtonContainer.GetElementsByTagName("button")(0)
'Click the button.
LoginButton.InvokeMember("click")
+0
真实的传说。非常感谢。 –
+0
@JohnKens:很高兴能帮到你! –
的'默认WebBrowser'控制使用Internet Explorer 7的文档仿真模式,我怀疑蒸汽的网站与今天兼容。您的代码应该可以工作,但它可能不会因为浏览器版本太旧而导致(脚本)错误。切换到系统上最新安装的IE版本(希望是IE 11/Edge)很可能会解决问题。在这里看到我的答案:[Vb.net Visual Studio Web浏览器导航坏请求](https://stackoverflow.com/questions/42365833/vb-net-visual-studio-web-browser-navigate-bad-request) –
浏览器确实拉起蒸汽网站很好,我可以手动登录。代码还输入用户名和密码。我不明白为什么需要使用更高版本的浏览器,但我可以尝试。 –
虽然通过设置'WebBrowser1.ScriptErrorsSuppressed = True',你永远不会真正知道是否有任何脚本错误。虽然您应该仍然切换到最新版本,因为IE 7真的是** _旧的,使得失败的可能性非常高** _。 –