以编程方式填写表单后重定向URL

时间:2015-04-14 10:27:17

标签: asp.net vb.net webforms webbrowser-control

我对重定向的网址有疑问。我正在自动填写。填写表格后,我提交表格并单击按钮。之后,它会重新显示到新页面。我需要重定向网址。

例如

webBrowser1.Navigate("myurl.com")

        For I As Integer = 0 To 500
            If webBrowser1.ReadyState = WebBrowserReadyState.Complete Then Exit For
            Threading.Thread.Sleep(1)
            Application.DoEvents()
        Next

        Dim elementLogin = webBrowser1.Document.GetElementById("login_identifier")
        If Not IsNothing(elementLogin) Then
            webBrowser1.Document.GetElementById("login_identifier").SetAttribute("Value", "myemail")
        End If
        Dim elementPassword = webBrowser1.Document.GetElementById("login_password")
        If Not IsNothing(elementLogin) Then
            webBrowser1.Document.GetElementById("login_password").SetAttribute("Value", "mypassword")
        End If
        webBrowser1.Document.GetElementById("login_btn").Enabled = True
        webBrowser1.Document.GetElementById("login_btn").InvokeMember("click")

点击按钮后我需要重定向的网址。在单击登录按钮后重定向到新页面。如果可能,请帮我解决这个问题 感谢

1 个答案:

答案 0 :(得分:0)

您可以使用WebBrowser.URL获取要导航到的网页。但是,如果您尝试在导航开始之前获取新网址(这意味着您将获得当前网址),则可能会出现问题。

相反,尝试循环遍历与按钮ID匹配的WebBrowser.Document的所有元素,最后获取按钮的href

Dim NextURL As String() = ""
For Each ele As HtmlElement In webBrowser1.Document.All
    If ele.GetAttribute("id") = "login_btn" then
        NextURL = ele.GetAttribute("href")
        Exit For
    End If
Next

这会触发“no”异常,并且会同时对多个元素起作用。或者,也许更适合您的单独按钮,请使用:

Dim NextURL As String = webBrowser1.Document.GetElementById("login_btn").GetAttribute("href")

编辑:由于按钮的href标记似乎为空,因此最好在重定向后订阅WebBrowser.DocumentCompleted事件处理程序,以通过WebBrowser.URL获取新的网址。祝你好运!