VBA (инстаграм, как нажать кнопку «следовать»)? - PullRequest
0 голосов
/ 11 июня 2019

Я пользуюсь офисом 2019. В VBA я пытаюсь нажать кнопку «следовать».на INSTAGRAM, но он не нажал на этом.просто откройте страницу, и тогда ничего не произойдет.Итак, PLZ, помогите мне, потому что это позвоночник моего проекта.

Sub one()


Dim IE As Object
Dim doc As HTMLDocument
Dim ele As IHTMLElement


Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = 1
IE.navigate "https://www.instagram.com/gal_gadot/"

Do
Loop Until IE.readyState = 4

Set doc = IE.document

'doc.getElementsByTagName("button").innerText
'doc.getElementsByClassName("_5f5mN       jIbKX  _6VtSN     yZn4P   ").innerText

For Each ele In doc.getElementsByTagName("span")
   ' If InStr(ele.innerText, "Follow") > 0 Then ele.Click
    On Error Resume Next
    If ele.Value = "Follow" Then
    ele.Click
    End If
Next

For Each ele In doc.getElementsByTagName("button")
   ' If InStr(ele.innerText, "Follow") > 0 Then ele.Click
    On Error Resume Next
    If ele.Value = "Follow" Then
    ele.Click
    End If
    Next


End Sub

ЗДЕСЬ ФАЙЛ HTML

<span class="BY3EC  bqE32">
<span class="vBF20 _1OSdk">
<button class="_5f5mN       jIbKX  _6VtSN     yZn4P   ">Follow</button></span>
<span class="mLCHD _1OSdk">
<button class="_5f5mN       jIbKX KUBKM      yZn4P  m4t9r ">
<div class="OfoBO">
<div class="_5fEvj coreSpriteDropdownArrowWhite">
</div>
</div>
</button>
</span>
</span>

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Спасибо, SIM!Я не программист, но я сделал небольшое изменение, и оно отлично работало!

Sub FollowGalGadot()
    Const Url$ = "https://www.instagram.com/gal_gadot/"
    Dim IE As New InternetExplorer, post As Object

    With IE
        .Visible = True
        .navigate Url
        While .Busy = True Or .readyState < 4: DoEvents: Wend

        While post Is Nothing
            On Error Resume Next
            Application.Wait Now + TimeValue("00:00:001")
            Set post = .document.querySelector("._5f5mN.jIbKX._6VtSN.yZn4P")
            If Not post Is Nothing Then
                post.Click
                Debug.Print "it's done!!!"
            Else:
                Debug.Print "trying again"
            End If
            On Error GoTo 0
        Wend

    End With
    Stop
    IE.Quit
End Sub
0 голосов
/ 11 июня 2019

Сценарий поможет вам нажать на кнопку «Подписаться», но вы не сможете следовать за ней, пока не войдете в систему, потому что при нажатии на эту кнопку вы попадете на страницу входа. Кстати, вы всегда должны определять любой временной цикл, чтобы вы могли выйти из этого do loop в случае, если элемент недоступен. В SO есть несколько постов, которые освещают это.

Sub FollowGalGadot()
    Const Url$ = "https://www.instagram.com/gal_gadot/"
    Dim IE As New InternetExplorer, post As Object

    With IE
        .Visible = True
        .navigate Url
        While .Busy = True Or .readyState < 4: DoEvents: Wend

        Do
            DoEvents
            On Error Resume Next
            Set post = .document.querySelectorAll("a[href*='follow'] > button")
            On Error GoTo 0
        Loop While post.Length = 0

        post.item(0).Click

    End With
    Stop
    IE.Quit
End Sub
...