Je souhaite me connecter à une page Web qui demande un nom d'utilisateur et un mot de passe.
J'ai besoin d'une macro qui
Le code ne remplit pas l'utilisateur et le mot de passe et cliquez sur. J'obtiens un serveur distant d'erreur 462 non trouvé.
<!-- /1. Ahorro Inversión --> <!-- ELEMENTOS DEL BLOQUE --> <table border="0" width="494" cellpadding="0" cellspacing="1" bgcolor="white" style="margin-bottom:10px"> <tr class=apartado > <td width="20" class="a12" height="10" align="right"> <a href='javascript:plegarDesplegar("1","CC");' > <img id="_CC" src="/neti/images/AB/expandir.gif" border="0"> </a> </td> <td class="a12" width="354" height="15" valign="center" align="left"><b> Cuentas a la vista </b> </td> <td width="120" height="15" valign="center" align="right"> <!-- MILLORA --> <span class="a12b">999,99 € </span> </td> </tr> </table> <div id="_CC0" style="display:none"> <table border="0" width="494" cellpadding="0" cellspacing="0" bgcolor="white"> <!-- JV-18725 Añadimos CI --> <tr class="fila1"> <!-- Boton edicion cuenta --> <td class="a11" width="195" height="15" align="left" valign="top" nowrap> <table class="septd2"> <tr> <td style="padding-left:20px" valign="center" align="left" width="10"> <a href='javascript:mostrarEdicion("_CC0");' > <img id="_BtEdicion__CC0" name="_BtEdicion" src="/neti/images/AB/Lapiz-11x11.png" border=0> </a> </td> <td align="left" class="a11"> <div id="_CC0_CC"> CUENTA ACTIVA </div> <div id="_CC0_M" style="display:none;"> <span class="returnicon"> <script> function validate_CC0(){ var valueInput = document.getElementById("_CC0_IN").value; valueInput = valueInput.replace(/[^A-Za-z0-9\u002e\s\u002c\u003a\u003b\u003f\u0021\u002d\u005f\u00A1\u00BF\u002D\u00E4\u00E1\u00E0\u00E7\u00EB\u00E9\u00E8\u00ED\u00EC\u00EF\u00F1\u00F6\u00F3\u00F2\u00FA\u00F9\u00FC\u00C4\u00C1\u00C0\u00C7\u00CB\u00C9\u00C8\u00CD\u00CC\u00CF\u00D1\u00D3\u00D2\u00D6\u00DA\u00D9\u00DC\u00A1\u00BF]/g,""); document.getElementById("_CC0_IN").value = valueInput; document.getElementById("_CC0_CC").innerHTML = valueInput; } </script> <input id="_CC0_IN" type="text" maxlength="25" onblur='validate_CC0();timeNameAccountAuto("/activobank/","_CC0_IN","xxxxx","CUENTA ACTIVA","2","La descripción debe contener como mÃnimo 3 caracteres","La descripción debe contener como máximo 25 caracteres");' onkeydown='return validateExit(event)' onKeyPress='validate_CC0();return validateKeyPress(event,"xxxxxxx","/activobank/","La descripción debe contener como mÃnimo 3 caracteres","2","CUENTA ACTIVA","La descripción debe contener como máximo 25 caracteres")'/> <a href='javascript:getNameAccount("_CC0","xxxxx","/activobank/","CUENTA ACTIVA","2");' > <img src="/neti/images/AB/Borrar-9x9.png" border=0 > </a> </span> </div> </td> </tr> <tr> <td style="padding-left:20px" valign="center" align="left" width="10"> </td> <td class="a11" width="230" height="15" align="left" valign="center" colspan="2"> <input type="hidden" value="" name="alias_cc_2">
Html de la deuxième page
Sub ExtractActivo() Dim IE As Object Dim pagina1 As HTMLDocument Dim pagina2 As HTMLDocument Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True âFirst page IE.navigate "https://www.activobank.com/cs/Satellite/BC/" Application.Wait (Now + TimeValue("00:00:02")) Set pagina1 = IE.document pagina1.getElementById("userDNI").Value = Range("M1").Value Application.Wait (Now + TimeValue("0:00:02")) pagina1.getElementById("pinNif").Value = Range("M2").Value Application.Wait (Now + TimeValue("0:00:02")) pagina1.getElementsByClassName("btn tipo4")(0).Click Application.Wait (Now + TimeValue("00:00:02")) âSecond page IE.navigate "https://www.activobank.com/activobank/CUGlobalPositionNew.init.bs" Set pagina2 = IE.document 'Here code to download tables IE.Quit Set IE = Nothing: Set pagina1 = Nothing: Set pagina2 = Nothing End Sub
3 Réponses :
Je pense que vous ne cliquez pas sur le bouton droit. Aller à la page que vous avez liée et inspecter le bouton de connexion ne me montre pas un élément de "btn typo4" mais:
<input id="button1" name="accept" type="button" value="Entrar" onclick="return validate()" class="btn login" tabindex="3" style="color: rgb(255, 255, 255);">
Pourquoi essayez-vous de localiser le bouton par nom de classe quand il a un inputId?
Bonus: https://codingislove.com/http- requêtes-excel-vba /
Les requêtes xmlhttp sont meilleures pour le scraping Web avec vba.
N'hésitez pas à supprimer si je me trompe.
p>
Vos noms de champ / classe proviennent de l'onglet «Activo Online», mais l'URL de votre «Première page par défaut est l'onglet« Particularités ». Vous devez probablement utiliser les champs de connexion sur «Particulares» ou accéder d'abord à «Activo Online».
https://www.activobank.com/cs/Satellite/BC/Activo-Online/1191355337777/es/ semble être un lien direct vers la page qui contient les champs avec lesquels vous essayez de travailler.
Vous avez probablement également besoin d'une boucle après chaque:
Do While ie.Busy Or ie.readyState <> READYSTATE_COMPLETE DoEvents Loop
pour attendre le chargement de la page. Alors ajoutez ce code en dessous:
IE.navigate
Ce qui devrait signifier que vous pouvez ensuite vous débarrasser de vos lignes "application.wait".
Ce qui suit cible les bons éléments et clique sur Soumettre. Il utilise les sélecteurs css [] attribut = valeur et le sélecteur # id.
Option Explicit 'VBE > Tools > References: ' Microsoft Internet Controls Public Sub Login() Dim ie As InternetExplorer Set ie = New InternetExplorer With ie .Visible = True .Navigate2 "https://www.activobank.com/cs/Satellite/BC/" While .Busy Or .readyState < 4: DoEvents: Wend .document.querySelector("[name=userDNI]").Value = "abc" .document.querySelector("[name=pinDNI]").Value = "123" .document.querySelector("#button1").Click While .Busy Or .readyState < 4: DoEvents: Wend Stop End With End Sub
Cela fonctionne parfaitement. Connectez-vous sur la première page, puis accédez à la deuxième page. Une fois que je suis sur la deuxième page, ce que je dois faire est de copier le solde de mon compte bancaire de cette page vers Excel. Ce solde est dans un tableau que je voudrais copier complet et, si ce n'est pas possible, au moins copier la valeur 999,99 du code html que j'ai ajouté à ma question initiale. Que dois-je ajouter dans le code pour le faire?
Je vous suggère d'envisager d'accepter cette réponse et d'ouvrir une nouvelle question avec la partie suivante et assurez-vous d'inclure le html car nous ne pouvons pas nous connecter et afficher la page. Vous pouvez utiliser l'outil d'extrait de code disponible via modifier pour ajouter du HTML. N'insérez pas d'images au format HTML.
Désolé, je vais le faire.
Pardon, comment puis-je accepter votre réponse? Je ne sais pas comment faire ça.
vous cliquez à côté de la réponse sur la coche stackoverflow.com/help/someone-answers
D'accord. Je l'ai fait. Et la question suivante se trouve dans stackoverflow.com/questions/55250830/...