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 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">
3 Réponses :
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. P>
J'ai donné à cela une tourbillon, mais je pense que je dois comprendre à envoyer un peu plus pour obtenir ce travail
est tout sur une page ou est-il divisé entre deux pages comme le login Gmail? P>
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 P>
Tout sur la seule page
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
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.
Essayez d'abord de .FOCUS sur l'élément, puis ajoutez la valeur.