无法使用VBA登录我的帐户



在线:

Set ieElement = objIE.Document.getElementsByClassName("sg-btn sg-btn-primary btn-signin")
以下代码的

ieElement.Click引发了一个错误,称为"对象不支持此属性或方法"。

Sub login()
    Dim objIE As InternetExplorer
    Dim uid As String
    Dim pwd As String
    Dim rng As Range
    Dim sh As Worksheet
    Dim ieElement As Object
    Set sh = Sheets("Indeed Resume Download")
    Set rng = sh.Range("A2")
    On Error Resume Next
    objIE.Quit
    Set objIE = Nothing
    On Error GoTo 0
    uid = rng.Value
    pwd = rng.Offset(0, 1).Value
    Dim j As Long
    Set objIE = New InternetExplorer 'Initialize internet object
    objIE.Navigate "https://secure.indeed.com/account/loginservice=my&hl=en_IN&co=IN&continue=https%3A%2F%2Fwww.indeed.co.in%2F"
    objIE.Visible = True
    objIE.Document.all.signin_email.Value = UserID    
    objIE.Document.all.signin_password.Value = Password
    Set ieElement = objIE.Document.getElementsByClassName("sg-btn sg-btn-primary btn-signin")
    ieElement.Click
    For j = 2 To sh.Cells(Rows.Count, 27).End(xlUp).Row
    Set objIE = New InternetExplorer
    With objIE
    .Navigate sh.Range("CA" & j).Value
    Do While .Busy = True
        DoEvents
    Loop
    Do While .Busy: Loop
    Do While .ReadyState <> READYSTATE_COMPLETE: Loop
    Do While .Busy: Loop
    End With
    Do While objIE.Busy = True
        DoEvents
    Loop
    Next j
    Set objIE = Nothing
End Sub

使用getElementsByClassName时,您必须确定想要的类名称,因为可能有很多。如果您的类名称是唯一的(在这种情况下看起来可能是),则可以将(0)添加到末尾。如果要搜索所有类名称,则可以使用For Each...Next语句。

请注意以下不同之处: getElementByID()getElementsByClassName()?与className一起使用时元素是复数的,因此您需要指定所需的该类的哪个元素。

尝试用以下方式替换线路:

Set ieElement = objIE.Document.getElementsByClassName("sg-btn sg-btn-primary btn-signin")(0)

您当前正在使用的方法将符合以下方面:

Dim ieElements, ieElemBtn, ieElement
Set ieElements = objIE.Document.getElementsByClassName("sg-btn sg-btn-primary btn-signin")
For Each ieElement in ieElements
    If ieElement ..... Then 
        Set ieElemBtn = ieElement
        Exit For
    End If
Next ieElement 
ieElemBtn.Click

最新更新