首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript:使用自动热键登录网站

JavaScript:使用自动热键登录网站
EN

Stack Overflow用户
提问于 2017-06-07 10:04:26
回答 2查看 1K关注 0票数 1

我是javascript和autohotkey编程的新手。我正在尝试登录一个网站,但到目前为止,我无法正确提交表单。

下面是该页面的HTML:

代码语言:javascript
复制
     <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>

下面是我的代码:

代码语言:javascript
复制
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()
EN

回答 2

Stack Overflow用户

发布于 2017-06-08 03:13:21

您可以尝试这样做:

代码语言:javascript
复制
wb.document.getElementsByClassName("btn btn-default btn-inverse btn-lg btn-login text-uppercase")[0].click()

这将单击submit按钮,如果该按钮是页面上具有该类名的第一个按钮。请记住,getElementsByClassName()返回一个nodelist,因此您必须通过在方括号中包含引用来指定要单击的特定元素。

接下来,只需使用.click()方法即可。

如果这回答了您的问题,请标记已回答的问题。如果没有,请让我知道,这样我们就可以得到答案。

票数 0
EN

Stack Overflow用户

发布于 2017-06-09 16:59:46

你的问题是你永远得不到表单元素。您试图通过它的标记名访问它,但您使用的是getElementsByName方法。相反,应该使用getElementsByTagName方法:

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44402337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档