0

I am trying to automate a report through VBA. I have worked in VBA but not able to login in iTunes website through codes. Someone told me that it is written in IFrame, but i have no idea. Even i am not able to put my username in input box of login page.

https://itunesconnect.apple.com/login

Dim HTMLdoc As HTMLDocument    
Dim MyBrowser As InternetExplorer

Sub check()

    Dim MyHTML_element As IHTMLElement
    Dim MyURL As String

    MyURL = "https://itunesconnect.apple.com/login"
    Set MyBrowser = New InternetExplorer

    MyBrowser.Silent = True
    MyBrowser.navigate MyURL
    MyBrowser.Visible = True

    Do
    Loop Until MyBrowser.readyState = READYSTATE_COMPLETE

    Set HTMLdoc = MyBrowser.document

    HTMLdoc.getElementsByID("account_name_text_field").Value = "username@outlook.com"
    HTMLdoc.all.Password.Value = "password"

    For Each MyHTML_element In HTMLdoc.getElementsByTagName("input")

        If MyHTML_element.Type = "sign-in" Then MyHTML_element.Click: Exit For

    Next

Err_Clear:

    If Err <> 0 Then

        Err.Clear

        Resume Next
    End If
End Sub
QHarr
  • 83,427
  • 12
  • 54
  • 101
TIkli
  • 3
  • 2

1 Answers1

0

API sounds like a good idea. The whole page is very slow loading (for me at least) and there is an iframe to navigate.

I would go with selenium basic wrapper for vba and switch to the iframe. I will try to improve this when I have time but for now this works.

After installing selenium you will need to add a reference via VBE > Tools > References to Selenium Type library.

Option Explicit
Public Sub EnterInfo()
    Dim d As WebDriver, t As Date, ele As Object
    Set d = New ChromeDriver
    Const URL = "https://itunesconnect.apple.com/login"
    Const WAIT_TIME_SECS As Long = 30
    t = Timer
    With d
        .Start "Chrome"
        .get URL
        Do
            DoEvents
            If Timer - t > WAIT_TIME_SECS Then Exit Do
            On Error Resume Next
            .SwitchToFrame "aid-auth-widget-iFrame"
            Set ele = .FindElementByCss("#account_name_text_field")
            On Error GoTo 0
        Loop While ele Is Nothing

        If ele Is Nothing Then Exit Sub
        ele.SendKeys "Joe.Bloggs@aol.com"

        .FindElementByCss("#sign-in").Click

        'Other code....
        Stop                                     '<=Delete me later
        .Quit
    End With
End Sub
QHarr
  • 83,427
  • 12
  • 54
  • 101