0
votes

En essayant de remplir un formulaire pour vous connecter à un site via VBA mais n'enregistrer pas le texte que j'ai entré

Affiche de première fois, utilisateur de longue date.

J'essaie d'écrire un script dans VBA pour vous connecter à un site pour extraire ensuite des données à une étape ultérieure. P>

J'ai frappé un bloc routier avec essayer de vous connecter au site, il y a trois classes forts> qui changent une fois que vous remplissez manuellement le nom d'utilisateur et le mot de passe et deux Aria-invalide qui tournez de vrai em> à faux em>. Malheureusement, cela ne met pas à jour si vous essayez de remplir les formulaires via VBA. P>

Ceci est le code VBA que j'ai actuellement P>

<input name="password"
class="ng-not-empty ng-dirty ng-valid-parse ng-valid ng-valid-required ng-touched"
id="password"
aria-invalid="false"
required=""
type="password"
ng-keydown="vm.loginOnKeyEnter($event)"
ng-class="vm.passwordEmptyClass"
ng-model="vm.password">


1 commentaires

Essayez d'abord de .FOCUS sur l'élément, puis ajoutez la valeur.


3 Réponses :


1
votes

Essayez d'utiliser la méthode .Focus pour focaliser la zone de texte d'abord, puis utilisez le SendKeys Déclaration pour entrer la valeur.


1 commentaires

J'ai donné à cela une tourbillon, mais je pense que je dois comprendre à envoyer un peu plus pour obtenir ce travail



0
votes

est tout sur une page ou est-il divisé entre deux pages comme le login Gmail?

1 page Exemple: Entrez le nom d'utilisateur, entrez le mot de passe, cliquez sur Connexion
Exemple de 2 Page: Entrez le nom d'utilisateur (cliquez sur Suivant), entrez le mot de passe, cliquez sur Connexion


1 commentaires

Tout sur la seule page



0
votes

Le code ci-dessous doit fonctionner s'il s'agit d'une seule page, mais vous devrez remplir la partie Information Signin div puisqu'elle ne semble pas être une URL valide. Suivez simplement le même format et notez que tout est sensible à la casse. Tks.

Sub LoginToSite()

Const cURL = "https://website.com.au"
Const cusername = "FredFlinstone"
Const cpassword = "Password000"

Dim IE As InternetExplorer
Dim doc As HTMLDocument
Dim LoginForm As HTMLFormElement
Dim UsernameInputBox As HTMLInputElement
Dim PasswordInputBox As HTMLInputElement
Dim SigninButton As HTMLInputButtonElement

Set IE = New InternetExplorer

IE.Visible = True
IE.navigate cURL

'Wait for initial page to load

Do While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop

Set doc = IE.document

'Get the only form on the page

Set LoginForm = doc.forms(0)

'Get the Username textbox and populate it
'input name="username" id="username" size="18" value="" class="ng-touched ng-not-empty ng-dirty ng-valid-parse ng-valid ng-valid-required" type="text"

Set UsernameInputBox = doc.getElementById("username")
UsernameInputBox.Value = cusername

'Get the Password textbox and populate it
'input name="password" id="password" size="18" class="ng-not-empty ng-dirty ng-valid-parse ng-valid ng-valid-required ng-touched" type="text"


Set PasswordInputBox = doc.getElementById("password")
PasswordInputBox.Value = cpassword

'Get the form input button and click it
'button class="XXXXX" name="XXXXX" id="XXXXX" value="XXXXX" type="text"

Set SigninButton = doc.getElementById("XXXXX")
SigninButton.Click

'Wait for the new page to load

Do While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop

End Sub


2 commentaires

Hey Jim, j'ai donné à cela un tourbillon et ça n'a toujours pas travaillé.


Vous êtes-vous assuré de changer les informations SigninButton? Vous auriez dû le faire en premier. J'ai pu remplir le reste parce que vous avez fourni les détails, mais je n'en ai pas eu pour cette partie et l'URL n'était pas valide. C'est la partie qui a besoin changé (tout dans les citations): ..... 'Obtenez le bouton Entrée de formulaire et cliquez sur IT' Button Class = "xxxxx" nom = "xxxxx" id = "xxxxx" valeur = "xxxxx" TYPE = "TEXTE" SET SIGNINBUTTON = DOC.GETTELEMENTBYID ("XXXXX") SigninButton.Cliquez ... .... Si cela ne fonctionne pas alors je pourrais connaître une autre approche.