2017-06-07 4 views
1

Je suis novice en programmation javascript et autohotkey. J'essaie de me connecter à un site Web, mais jusqu'à présent, je suis incapable de soumettre le formulaire correctement.JavaScript: Se connecter sur le site Web avec autohotkey

Voici le code HTML de la page:

 <form ng-show="!maintenanceCritique" class="form ng-pristine ng-valid-pattern ng-valid-maxlength ng-valid ng-valid-required" name="formMobile" ng-submit="login(formMobile)" novalidate="" touch-submit=""> 
 

 

 
      <div style="padding-top:30px;padding-left:20px;padding-right:20px"> 
 

 
        <span>&nbsp;&nbsp;Code permanent</span><br> 
 
        <input style="width:100%" name="codePermanent" ng-model="user.codePermanent" ng-pattern="/^[A-Za-z]{4}(0[1-9]|[12][0-9]|3[01]|6[3-9]|[78][0-9]|9[0-3]|99)([0,5][1-9]|[1,6][012]|13|63)[0-9]{4}$/" maxlength="12" tabindex="1" placeholder="(ex. : ABDC12034566)" autofocus="" required="" class="ng-pristine ng-valid-pattern ng-valid-maxlength ng-not-empty ng-valid ng-valid-required ng-touched"> 
 

 
        <br><br> 
 
        <span>&nbsp;&nbsp;NIP</span><br> 
 
        <input style="width:100%" type="password" name="password" ng-model="user.password" ng-pattern="/^[0-9]{5}$/" maxlength="5" tabindex="2" placeholder="(ex. : 12345)" required="" class="ng-pristine ng-valid-pattern ng-valid-maxlength ng-not-empty ng-valid ng-valid-required ng-touched"> 
 

 
        <div> 
 
        <!-- ngIf: formMobile.codePermanent.$error.required && formMobile.password.$error.required && submitted --> 
 
        <!-- ngIf: err --> 
 
        </div> 
 
        <br> 
 

 
        <div style="text-align:right"> 
 
         <button class="btn btn-default btn-inverse btn-lg btn-login text-uppercase" type="submit" click="submitted=true" tabindex="3"> 
 
         <span style="height:60%;width:140px;text-transform:none;font-family:'Conv_Dosis',arial,sans-serif; font-size:100%">Connexion</span> 
 
        </button> 
 
        </div> 
 
    </form> 
 
    </div>

Et voici mon code:

WB := ComObjCreate("InternetExplorer.Application") 
WB.Visible := True 
WB.Navigate(URL) 

loop 
If !WB.busy 
break 
sleep 1000 


WB.document.getElementsByName("codePermanent")[0].focus() 
WB.document.getElementsByName("codePermanent")[0].value := "username" 
sleep 1000 
WB.document.getElementsByName("password")[0].focus() 
WB.document.getElementsByName("password")[0].value := "password" 

form := WB.document.getElementsByName("form")[0] 
form.method := "post" 
form.submit() 

Répondre

0

Vous pouvez essayer ceci:

wb.document.getElementsByClassName("btn btn-default btn-inverse btn-lg btn-login text-uppercase")[0].click() 

Cela va cliquer sur le bouton soumettre si ce bouton est le premier sur la page avec ce nom de classe. Remeber, getElementsByClassName() renvoie un nodelist, vous devez donc spécifier l'élément spécifique que vous souhaitez cliquer en incluant sa référence entre crochets.

De là, il suffit d'utiliser la méthode .click().

Si cela répond à votre question, veuillez indiquer la réponse à la question. Si non, faites le moi savoir afin que nous puissions obtenir une réponse.

+0

Je l'ai essayé et il ne me connecter pas, malheureusement –

+0

Vous pouvez essayer en cliquant via jquery par passint à travers la barre d'adresse. Voyez si cela fonctionne: 'wb.Navigate (JavaScript: $ ('input [type = submit]'). Click())' – GroggyOtter

0

Votre problème est que vous n'avez jamais l'élément de formulaire. Vous essayez d'y accéder par son nom de balise, mais vous utilisez la méthode getElementsByName. Au lieu de cela, vous devez utiliser la méthode getElementsByTagName:

WB := ComObjCreate("InternetExplorer.Application") 
WB.Visible := True 
WB.Navigate(URL) 

While WB.readyState!=4 || WB.document.readyState!="complete" || WB.busy 
    Sleep 50 

WB.document.getElementsByName("codePermanent")[0].value := "username" 
WB.document.getElementsByName("password")[0].value := "password" 
Sleep 1000 
form := WB.document.getElementsByTagName("form")[0] ; TagName - not Name 
form.method := "post" 
form.submit()