我是javascript和autohotkey编程的新手。我正在尝试登录一个网站,但到目前为止,我无法正确提交表单。
下面是该页面的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> 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> 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()发布于 2017-06-08 03:13:21
您可以尝试这样做:
wb.document.getElementsByClassName("btn btn-default btn-inverse btn-lg btn-login text-uppercase")[0].click()这将单击submit按钮,如果该按钮是页面上具有该类名的第一个按钮。请记住,getElementsByClassName()返回一个nodelist,因此您必须通过在方括号中包含引用来指定要单击的特定元素。
接下来,只需使用.click()方法即可。
如果这回答了您的问题,请标记已回答的问题。如果没有,请让我知道,这样我们就可以得到答案。
发布于 2017-06-09 16:59:46
你的问题是你永远得不到表单元素。您试图通过它的标记名访问它,但您使用的是getElementsByName方法。相反,应该使用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()https://stackoverflow.com/questions/44402337
复制相似问题