2012-12-24 2 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") 

가 다음 프로그램을 실행하고 프로세스의 첫 번째 페이지를 완료합니다 웹 브라우저 컨트롤에서 "내 계정 만들기"버튼을 클릭 주석 처리. 이것은 위의 코드 줄에 수동으로 단추를 클릭하는 것과 같은 방식으로 작동하지 않는 문제가 있음을 나타냅니다.

+0

'IAgreeBtn'은'input' 요소가 아닙니다. –

+0

질문이 순수한 VB –

+0

일 때 C# 태그를 포함하지 마십시오. @MichaelPerrenoud ' ' – user1593175

답변

0

코드에 따르면 웹 브라우저 컨트롤과 버튼 코드가 ​​야후의 다른 두 가지 로케일에 대해 작동하고있는 것으로 보입니다. 웹 브라우저는 na이고 버튼은 eu를 사용하고 있습니다.

+0

및이 문제를 어떻게 해결합니까? – user1593175

+0

인증 할 영역을 결정하고 두 URL을 해당 영역으로 변경하십시오. 우선, 당신은'https : // na.'를 가지고 있습니다. 이것은 북미라고 가정하고 있고, 다른 한편에서는'https : // eu.'를 가지고 있습니다. 나는 유럽이라고 가정하고 있습니다. –

관련 문제