Vb.net 如何确定WebBrowser控件上的自动登录是否有效?

Vb.net 如何确定WebBrowser控件上的自动登录是否有效?,vb.net,webbrowser-control,Vb.net,Webbrowser Control,我正在使用WebBrowser控件来确定站点列表是否使用其出厂默认用户名和密码。然而,我遇到了麻烦,因为我用来模拟登录的DocumentCompleted在登录完成后也会被调用 此外,当它工作时,它会循环并错误地报告其他几个站点具有默认登录名 我已经注意到了这些问题,今天下午我想都不敢想。不确定是因为我累了,还是因为我房间另一边的那个家伙在唱他喜欢的新乐队的每一个字 如果没有其他东西,有时它可以帮助我把所有的东西都打印出来,第二天再阅读,也许我的工作资料可以帮助其他人 问题: 在使用默认凭据的实

我正在使用WebBrowser控件来确定站点列表是否使用其出厂默认用户名和密码。然而,我遇到了麻烦,因为我用来模拟登录的DocumentCompleted在登录完成后也会被调用

此外,当它工作时,它会循环并错误地报告其他几个站点具有默认登录名

我已经注意到了这些问题,今天下午我想都不敢想。不确定是因为我累了,还是因为我房间另一边的那个家伙在唱他喜欢的新乐队的每一个字

如果没有其他东西,有时它可以帮助我把所有的东西都打印出来,第二天再阅读,也许我的工作资料可以帮助其他人

问题:

在使用默认凭据的实际站点之后出现误报 当页面404或加载意外页面时停止处理 代码:


在DocumentCompleted中,您应该检查事件url是否是浏览器的目标url。这样可以确保在页面完全加载后调用代码一次

此外,您正在调用Login,但随后将继续执行处理浏览器的代码。这可能会导致不必要的行为。您应该改为使用Else并尝试在那里登录

If e.Url = WebBrowser.Url Then    
    ' Determine Results
    If WebBrowser.Url.ToString.Contains("index.php") Then
        ' Successfully Logged In
        LogData("Successfully Logged In to " & linqData(i).Name)
        NextSite()
    ElseIf WebBrowser.Url.ToString.Contains("loginfailed.php") Then
        ' Failed to Login
        NextSite()
    Else
        Login("administrator", "password")
    End If
End If
让登录成为布尔函数也是一个好主意。如果找不到要调用的登录元素,则返回false,然后重试或转到下一个站点

If e.Url = WebBrowser.Url Then    
    ' Determine Results
    If WebBrowser.Url.ToString.Contains("index.php") Then
        ' Successfully Logged In
        LogData("Successfully Logged In to " & linqData(i).Name)
        NextSite()
    ElseIf WebBrowser.Url.ToString.Contains("loginfailed.php") Then
        ' Failed to Login
        NextSite()
    Else
        Login("administrator", "password")
    End If
End If