Autologin VBScript не работает для PeopleSoft

В Peoplesoft ERP существует множество процессов, которые необходимо запускать вручную после входа в PeopleSoft. Мы намерены автоматизировать этот процесс с помощью VBS, так как он требует всего несколько кликов. Однако мы застряли на самом первом шаге — войти в Peoplesoft. Ниже приведен код на данный момент, который мы пробовали. Это открывает страницу входа, но дальше ничего не происходит. Может ли кто-нибудь помочь войти в систему?

РЕДАКТИРОВАТЬ: мы находимся в IE11

WScript.Quit Main

Function Main
    Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
    IE.Visible = True
    IE.Navigate "our URl"
    Wait IE

    Set Helem = IE.document.getElementByID("userid")
    Helem.Value = "username"  
    Set Helem = IE.document.getElementByID("pwd")
    Helem.Value = "password" 
    Set Helem = IE.document.Forms(0)
    Helem.Submit
End Function

Sub Wait(IE)
    Do
        WScript.Sleep 500
    Loop While IE.ReadyState < 4 And IE.Busy 
    Do
        WScript.Sleep 500
    Loop While IE.ReadyState < 4 And IE.Busy 
End Sub

Sub IE_OnQuit
    On Error Resume Next
    WScript.StdErr.WriteLine "IE closed before script finished."
    WScript.Quit
End Sub

Пожалуйста, найдите ниже HTML-код:

<html dir=ltr lang=en>
<head>
<title>Oracle PeopleSoft Sign-in</title>
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,user-scalable=yes">  
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
<script language="JavaScript">
var sDomain =  ";
try {
    document.domain =  ";
}
catch (err) {; }
</script>
<style id="ptfb" type="text/css">body{display:none;}</style>
<script type="text/javascript">
if (self === top) {
    var fb = document.getElementById("ptfb");
    fb.parentNode.removeChild(fb);
} else {
    try { 
        top.location = self.location;
    } catch(ex) {}
}
</script>
<link  type="text/css" href="/PMXFGL01/signin.css" rel="stylesheet">
<script type="text/javascript" src="/PMXFGL01/signin.js"></script>
</head>

<body onload="ptSignon().login();">
<div id="pswrapper">
  <form id="login" name="login" method="post" action="?&cmd=login&languageCd=ENG" autocomplete="off">
    <input type="hidden" id="timezoneOffset" name="timezoneOffset" value="0">
    <input type="hidden" id="ptmode" name="ptmode" value="f">
    <input type="hidden" id="ptlangcd" name="ptlangcd" value="ENG">
    <input type="hidden" id="ptinstalledlang" name="ptinstalledlang" value="GER,UKE,DAN,HUN,CFR,SLK,ENG,CZE,FRA,NOR,CRO,POR,ARA,ZHT,JPN,ZHS,RUS,POL,T    HA,ITA,GRK,ROM,KOR,TUR,SER,SVE,ESP,DUT,MAY,BUL,HEB,FIN,VIE,SLV">
    <div class="signonMain">
      <img src="/PMXFGL01/images/Header.png" class="ps-staticimg"     alt="Oracle PeopleSoft Sign-in" title="Oracle PeopleSoft Sign-in" >
      <div class="ps_signinentry" >
        <div id="ptloginerrorcont" class="ps_login_error" >
          <div class="ps_login_error_inner" role="heading" aria-level="2">
            <a id="error_link" name="error_link" tabindex="1"><img     src="/PMXFGL01/images/PT_LOGIN_ERROR.gif" alt="Error"></a>
            <div class="psloginerror" id="discovery_error"     name="discovery_error" role="alert" aria-live="assertive" ></div>
              <span class="psloginerror" id="login_error" name="login_error"     role="alert" aria-live="assertive">User ID and Password     are required.</span>
            </div>
            <div class="ps_box-control psloginerror"     id="browsercheck_error" name="browsercheck_error" aria-live="assertive"     role="alert"></div>
          </div>
          <div> 
            <span class="ps_label-show" id="ptLabelUserid"><label     for="userid">User ID</label></span>
          </div>
          <div class="ps_box-control">
            <input type="text" id="userid" name="userid" value="xxx"     title="User ID">
          </div>
          <div>
            <span class="ps_label-show" id="ptLabelPassword"><label for="pwd">Password</label></span>
          </div>
          <div class="ps_box-control">
            <input type="password" id="pwd" name="pwd" title="Password" >
          </div>
          <div>
            <span class="ps_label-show" id="ptLabelSelect"><label for="ps_select_box">Select a Language</label></span>
          </div>
          <div id="ps_select_parent" >
            <div id= "ps_select_box" class="ps_box-control">            
              <select id="ptlangsel" name="ptlangsel"  title="Select a Language" class="ps_select" onChange="ptSignon().changeLangFunc(this, event)">
                <option value="ENG" title="English">English</option>
                <option value="UKE" title="UK English">UK English</option>
                <option value="ESP" title="Spanish">Espa&ntilde;ol</option>
                <option value="DAN" title="Danish">Dansk</option>
                <option value="GER" title="German">Deutsch</option>
                <option value="FRA" title="French">Fran&ccedil;ais</option>
                <option value="CFR" title="Canadian French">Fran&ccedil;ais&nbsp;du&nbsp;Canada</option>
                <option value="ITA" title="Italian">Italiano</option>
                <option value="HUN" title="Hungarian">Magyar</option>
                <option value="DUT" title="Dutch">Nederlands</option>
                <option value="NOR" title="Norwegian">Norsk</option>
                <option value="POL" title="Polish">Polski</option>
                <option value="POR" title="Portuguese">Portugu&ecirc;s</option>
                <option value="ROM" title="Romanian">Rom&#x00E2;n&#x0103;</option>
                <option value="FIN" title="Finnish">Suomi</option>
                <option value="SVE" title="Swedish">Svenska</option>
                <option value="TUR" title="Turkish">T&#x00FC;rk&#x00E7;e</option>
                <option value="CZE" title="Czech">&#x010C;e&#x0161;tina</option>
                <option value="JPN" title="Japanese">&#x65E5;&#x672C;&#x8A9E;</option>
                <option value="KOR" title="Korean">&#xD55C;&#xAD6D;&#xC5B4;</option>
                <option value="RUS" title="Russian">&#x0420;&#x0443;&#x0441;&#x0441;&#x043A;&#x0438;&#x0439;</option    >
                <option value="THA" title="Thai">&#x0E20;&#x0E32;&#x0E29;&#x0E32;&#x0E44;&#x0E17;&#x0E22;</option>
                <option value="ZHS" title="Simplified Chinese">&#x7B80;&#x4F53;&#x4E2D;&#x6587;</option>
                <option value="ZHT" title="Traditional Chinese">&#x7E41;&#x9AD4;&#x4E2D;&#x6587;</option>
                <option value="ARA" title="Arabic">&#x0627;&#x0644;&#x0639;&#x0631;&#x0628;&#x064A;&#x0629;</option>
                <option value="VIE" title="Vietnamese">Ti&#7869;ng Vi&#7879;t</option>
                <option value="BUL" title="Bulgarian">&#x0431;&#x044a;&#x043b;&#x0433;&#x0430;&#x0440;&#x0441;&#x043a;&#x0438;</option>
                <option value="CRO" title="Croatian">hrvatski</option>
                <option value="GRK" title="Greek">&#x0395;&#x03bb;&#x03bb;&#x03b7;&#x03bd;&#x03b9;&#x03ba;&#x03ac;</option>
                <option value="HEB" title="Hebrew">&#x05e2;&#x05d1;&#x05e8;&#x05d9;&#x05ea;</option>
                <option value="MAY" title="Bahasa Malay">Bahasa     Melayu</option>
                <option value="SER" title="Serbian">&#x0441;&#x0440;&#x043f;&#x0441;&#x043a;&#x0438;</option>
                <option value="SLK" title="Slovak">sloven&#x010d;ina</option>
                <option value="SLV" title="Slovenian">sloven&#x0161;&#x010d;ina</option>
              </select>
            </div>     
          </div>
          <div class="ps_box-button">
            <input name="Submit" type="submit" class="ps-button" value="Sign In" aria-label='To enable Accessibility mode, please check the checkbox "Enable Accessibility Mode" before you sign in. Sign In'>
          </div>
          <div class="ps_box-button">
            <input type="checkbox" name="accessible" id="accessible">
            <label for="accessible">Enable Accessibility Mode</label>
          </div>          
        </div>
        <div class="ps_box-link">
          <span class="ps-link"></span>
        </div>
        <img src="/PMXFGL01/images/Footer.png" width="100%" alt="">
        <footer id="ptfooter" class="ps_footer_text ">Copyright &copy; 2000, 2015, Oracle and/or its affiliates. All rights reserved. </footer>
    </div>  
  </form>
</div>
</body>
</html>

person Prateek Jaiswal    schedule 22.09.2016    source источник


Ответы (1)


следующее работает для меня в IE11:

Function Main
Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
IE.Visible = True
IE.Navigate "http://mysite/psp/myenvironment/?cmd=login"
Wait IE

With IE.Document
     .getElementByID("userid").value = "myUsername"
     .getElementByID("pwd").value ="myPassword"
     .getElementsByName("Submit")(0).click
End With
End Function
person Robin Debruyne    schedule 22.09.2016
comment
Спасибо Робин за ответ. Однако скрипт просто останавливается после открытия страницы входа. Текстовые поля по-прежнему не заполнены. Может быть, это какая-то проблема с моей настройкой безопасности IE? - person Prateek Jaiswal; 25.10.2016
comment
скрипт выдает вам сообщение об ошибке? Что он не может получить текстовые поля? Или просто ничего не делает? В последнем случае это могут быть настройки безопасности. - person Robin Debruyne; 30.10.2016
comment
Он ничего не делает, просто открывает URL-адрес, вот и все. Текстовые поля не заполняются. :-) Можете ли вы предложить другой способ вместо использования VB? - person Prateek Jaiswal; 02.11.2016
comment
Вы уверены, что используете правильный URL? вам нужно ввести конечное местоположение. не страница signon.html по умолчанию. - person Robin Debruyne; 02.11.2016
comment
Да, URL-адрес: http://****.**.***:9000/psp/domainname/?cmd=login&languageCd=ENG& - person Prateek Jaiswal; 03.11.2016