1
votes

La saisie de l'utilisateur et du mot de passe sur le Web génère l'erreur 462: ordinateur serveur distant introuvable

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

  • met l'utilisateur et le mot de passe et appuyez sur clic pour accéder à une première page Web.
  • accède à une deuxième page contenant les données dont j'ai besoin.

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>&nbsp;Cuentas a la vista
</b>
</td>
<td width="120" height="15" valign="center" align="right">
<!-- MILLORA -->
<span class="a12b">999,99
&euro;
</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">&nbsp;</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


0 commentaires

3 Réponses :


0
votes

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>


0 commentaires

0
votes

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".


0 commentaires

0
votes

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


6 commentaires

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/...