2017-04-13 3 views
0

Je suis en train de simuler l'interaction avec Google via l'application IE et en passant par le DOM pour obtenir les classes dont j'ai besoin et tout va bien, en passant le .Click action qui ne provoque pas un accident, mais il ne fait rien (page ne naviguait pas) - code et de capture d'écran HTML ci-dessous:.Click action ne rien faire - IE Simulation

Option Explicit 

Private Sub Test_Automation() 
Dim ie, doc, eInput, eButton, eButtons As Object 
Dim sURL, sTest As String 

Set ie = CreateObject("internetexplorer.application") 
sURL = "https://www.google.co.uk/?gfe_rd=cr&ei=IpDvWK72LsjCaJCbjKAL&gws_rd=ssl" 
sTest = "Test" 

With ie 
    .Visible = True 
    .Navigate sURL 
End With 

Do While ie.Busy Or ie.readyState <> 4 
    DoEvents 
Loop 

Set doc = ie.document 

Set eInput = doc.getElementByid("lst-ib") 
Set eButtons = doc.getElementsByTagName("input") 

eInput.Value = sTest 

For Each eButton In eButtons 
    If (eButton.getattribute("name") = "btnK") Then 
     eButton.Click 
     Exit For 
    End If 
Next 

End Sub 

enter image description here

Tout conseil sur ce que je fais le mal serait génial!

+1

Peut-être 'eInputs.Value' devrait-il être' Inputs.Value'? – Amorpheuses

+0

Votre code a quelques failles - not least 'eInputs.Value = sTest' qui renvoie une erreur parce que vous n'avez défini' eInputs' nulle part. Lisez ceci: http://stackoverflow.com/help/mcve et ensuite éditez votre question sinon c'est hors sujet. –

+1

Lors du débogage, il est vraiment utile d'utiliser 'Option Explicit' en haut de vos modules. – Amorpheuses

Répondre

2

Vous pouvez vous débarrasser de votre boucle For...Next au fond et remplacez-le par cliquer sur le bouton:

doc.forms(0).submit 

Le 0 peut être changé à un autre numéro (par exemple 1 ou 2) de cliquer sur un bouton différent. S'il y a plusieurs boutons sur une page sur lesquels il est possible de cliquer, il faudra juste un essai et une erreur pour savoir quel numéro correspond au bouton sur lequel vous voulez cliquer.

+0

Vous, monsieur, vous avez gagné une meilleure réponse! Je vous remercie! – Jeremy