2017-09-27 45 views
0

在线:无法登录到我的帐户的确使用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 
+2

您可以定义'uid'和'pwd'但是当你是使用它们,你称它们为'用户名'和'密码' - 是故意还是错误? – braX

+0

Jean,这是为了隐藏凭证。谢谢。 –

回答

3

当您使用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 
+0

谢谢戴维斯,它工作得很好。 –

相关问题