2012-12-24 83 views
3

我有一個小項目,我堅持。我試圖創建一個應用程序來創建雅虎電子郵件帳戶。代碼的問題在於,點擊操作會產生這樣的錯誤:「看起來創建帳戶時遇到了一些麻煩,請花點時間查看您的答案。」 但是,當我手動點擊瀏覽器控件時,它可以正常工作以進入下一頁。點擊功能不起作用

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) & "" 
     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瀏覽器控件的「創建帳戶」按鈕將完成過程的第一頁。這告訴我上面的代碼有一個問題,它與手動點擊按鈕的方式不一樣。

+0

東西告訴我'IAgreeBtn'不是'input'元素。 –

+0

當問題是純VB時,請不要包含C#標籤 –

+0

@MichaelPerrenoud我剛剛再次檢查了 user1593175

回答

0

基於代碼,看起來問題可能是Web瀏覽器控件和按鈕代碼針對雅虎的兩個不同語言環境進行操作:Web瀏覽器使用na並且按鈕使用的是eu。

+0

以及如何解決此問題? – user1593175

+0

確定您打算對哪個區域進行身份驗證,並將兩個URL都更改爲該區域。其中一個,你有'https:// na.',我假設的是北美,另一個你有'https:// eu.',我假設它是歐洲。 –