单击功能不起作用

时间:2012-12-24 19:10:37

标签: vb.net

我有一个小项目,我坚持。我正在尝试创建一个应用程序来创建雅虎电子邮件帐户。代码的问题在于点击操作会产生此错误:“看起来在创建帐户时遇到了一些问题。请花点时间查看您的答案。” 但是当我手动点击webbrowser控件时,它可以正常进入下一页。

Public Class Form1
    Dim _maryFirst() As String
    Dim _maryLast() As String
    Dim _maryZip() As String
    Dim _mstrPass As String
    Private Sub btnSignup_Click(sender As Object, e As EventArgs) Handles btnSignup.Click
        WebBrowser1.Navigate("https://eu.edit.yahoo.com/registration")
        WebBrowser1.ScriptErrorsSuppressed = True
        _mstrPass = RandomString(10)
    End Sub

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        Dim strLastname As String
        WebBrowser1.ScriptErrorsSuppressed = True
        strLastname = _maryLast(CInt(Int((2323 * Rnd()))))
        With WebBrowser1.Document
            If .Url.AbsoluteUri = "https://na.edit.yahoo.com/registration?.pd=&intl=us&origIntl=&done=&src=&last=&partner=yahoo_default&domain=&yahooid=&lang=en-US" Then
                .GetElementById("firstname").SetAttribute("value", _maryFirst(CInt(Int((810 * Rnd())))))
                .GetElementById("secondname").SetAttribute("value", strLastname)
                .GetElementById("yahooid").SetAttribute("value", strLastname & CInt(Int((9999 * Rnd()) + 1001)))
                .GetElementById("password").SetAttribute("value", _mstrPass)
                .GetElementById("passwordconfirm").SetAttribute("value", _mstrPass)
                .GetElementById("mm").SetAttribute("value", CInt(Int((12 * Rnd()) + 1)))
                .GetElementById("dd").SetAttribute("value", CInt(Int((25 * Rnd()) + 1)))
                .GetElementById("yyyy").SetAttribute("value", CInt(Int(((1980 - 1950) * Rnd()) + 1950)))
                .GetElementById("gender").SetAttribute("value", "f")
                .GetElementById("postalcode").SetAttribute("value", _maryZip(CInt(Int(29469 * Rnd()))))
                .GetElementById("IAgreeBtn").InvokeMember("click")
            End If
        End With
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        _maryFirst = IO.File.ReadAllLines(Application.StartupPath() & "\firstnames.txt")
        _maryLast = IO.File.ReadAllLines(Application.StartupPath() & "\lastnames.txt")
        _maryZip = IO.File.ReadAllLines(Application.StartupPath() & "\zip.txt")

    End Sub

    Private Shared Function RandomString(cb As Integer) As String

        Randomize()
        Dim rgch As String
        rgch = "abcdefghijklmnopqrstuvwxyz"
        rgch = rgch & UCase(rgch) & "0123456789"
        RandomString = ""
        ' ReSharper disable NotAccessedVariable
        Dim i As Long
        ' ReSharper restore NotAccessedVariable
        For i = 1 To cb
            RandomString = RandomString & Mid$(rgch, Int(Rnd() * Len(rgch) + 1), 1)
        Next

    End Function

End Class

评论

.GetElementById("IAgreeBtn").InvokeMember("click")
然后运行程序并单击“创建我的帐户”按钮,在Web浏览器控件中将完成该过程的第一页。这告诉我上面的代码行有一个问题,不知何故与手动点击按钮的方式不同。

1 个答案:

答案 0 :(得分:0)

基于代码,似乎问题可能是Web浏览器控件和按钮代码针对yahoo的两个不同语言环境运行:Web浏览器使用na并且按钮使用eu。