我正在将一个网站加载到winform中的WebBrowser
。我希望使用日志登录并通过vb.net自动传递
一旦页面加载
,我就会执行以下代码 WebBrowser1.Document.GetElementById("e").SetAttribute("value", "email@address")
WebBrowser1.Document.GetElementById("p").SetAttribute("value", "password")
WebBrowser1.Document.Forms(0).InvokeMember("submit")
我可以填写需要包含Log和pass的框,但是我无法自动启动网页的登录按钮。经过研究,我确信我复制了我找到的样本,但显然存在问题。 '按钮'没有被迫,因为我没有发生任何事情。当我手动按网站登录时,它会使用我填写的数据正确登录。
网页链接为https://www.weatherzone.com.au/customise.jsp
以及相关的源数据如下:
<form action="/customise.jsp" method="post" style="width: 75%; text-align: left;">
<div style="margin-bottom: 1em;">
<label for="e">Enter your email address:</label>
<input style="width: 95%;" type="text" name="e" id="e" /><br />
</div>
<div style="margin-bottom: 1em;">
<label for="p">Enter your password:</label>
<input style="width: 95%;" type="password" name="p" id="p" /><br />
</div>
<div style="margin-bottom: 1em;">
<input type="checkbox" name="rmbr" id="rmbr" value="1" />
<label for="rmbr" style="display: inline;">Remember me (check this box if you are a regular user of this computer)</label>
</div>
<div style="text-align: right; margin-top: 20px; padding-top: 10px; border-top: 1px solid silver;">
<input class="submit btn" type="submit" name="target" value="login" />
</div>
<input type="hidden" name="dest" value="/" />
</form>
答案 0 :(得分:2)
我应用了这个逻辑:
DocumentCompleted
事件中,以便在文档完成后运行代码。DocumentCompleted
也会引发,因此要摆脱iframe使用比较e.Url
和基本网址知道的标准。它运作正常。它重定向到相同的URL并显示红色未经过身份验证的消息。
<强>代码:强>
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
If (e.Url.ToString().StartsWith("https://www.weatherzone.com.au")) Then
WebBrowser1.Document.GetElementById("e").SetAttribute("value", "email@address.com")
WebBrowser1.Document.GetElementById("p").SetAttribute("value", "password")
WebBrowser1.Document.All().GetElementsByName("target").Cast(Of HtmlElement).First().InvokeMember("click")
End If
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.WebBrowser1.Navigate("https://www.weatherzone.com.au/customise.jsp")
End Sub
要使代码更稳定,请添加所需的空检查。