2017-06-07 28 views
1

私はjavascriptとautohotkeyのプログラミングの新人です。私はウェブサイトにログインしようとしていますが、これまではフォームを適切に提出することができません。ここで JavaScript:オートハットキーを使用してウェブサイトにログイン

は、ページのHTMLです:

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

そして、ここに私のコードです:

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() 

答えて

0

あなたはこれを試すことができます。

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

これは、そのボタンがそのクラス名を持つページの最初のボタンである場合、送信ボタンをクリックします。 Remeber、getElementsByClassName()nodelistを返します。そのため、参照を角括弧で囲んでクリックしたい特定の要素を指定する必要があります。

ここから、.click()メソッドを使用するだけです。

これがあなたの質問に答えた場合は、質問に答えてください。 そうでない場合は、私たちに連絡して回答を得ることができます。

+0

私はそれを試してみました、それは残念ながら –

+0

あなたはそれがアドレスバーを通じてpassintでjqueryのを経由して、それをクリックしてみてください可能性があり、私にログインしていません。その代わりに、getElementsByTagNameメソッドを使用する必要があります。 'wb.Navigate(JavaScript:$( 'input [type = submit]')。クリック())' – GroggyOtter

0

あなたの問題は、決してフォーム要素を取得しないことです。タグ名でアクセスしようとしていますが、getElementsByNameメソッドを使用しています。

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() 
関連する問題