使用AutoIT控制Internet Explorer中的菜单

时间:2016-04-20 03:12:23

标签: html internet-explorer autoit

在过去48小时内,我一直在努力创建一个可以在Internet Explorer中执行一些基本操作的脚本:

  1. 登录网站
  2. 从下拉菜单中选择一个选项
  3. 选中一个复选框
  4. 点击"确定"按钮
  5. 我登录网站没有问题,但是一旦我登录,我似乎无法使菜单正常工作。我感觉这与动态创建它们有关,但我的HTML体验非常有限所以我做不确定。 我尝试了一系列不同的函数(_IEFormElementGetObjByName,_IEFormGetCollection,_IEFormGetObjByName),但似乎无法使它工作。 我无法发布完整的脚本,因为它包含我无法公开发布的密码,但这里删除了用户/密码:

    ;Created by SYD-JAMEST from code found at:
    ;http://solubletech.blogspot.com.au/2011/02/use-autoit-v3-to-make-auto-login-script.html
    
    #Region ;*** Variables
    Const $DispatchSite = "https://equipmentrepaircas.interasset.com/cas/login?service=https%3A%2F%2Fwww.iasdispatchmanager.com%2Fdispatchmanager%2Fj_acegi_cas_security_check" 
    Const $uname="user"
    Const $pwd="pass%"
    #EndRegion
    
    #include <ie.au3>
    
    ;*** Navigate to Dispatch Manager and login with username & password
    $oIE = _IECreate ($DispatchSite)
    $oForm = _IEFormGetObjByName ($oIE, "fm1")
    $oQuery1 = _IEFormElementGetObjByName ($oForm, "username")
    $oQuery2 = _IEFormElementGetObjByName ($oForm, "password")
    
    _IEFormElementSetValue ($oQuery1,$uname)
    _IEFormElementSetValue ($oQuery2,$pwd)
    $oButton=_IEGetObjByName($oIE,"submit")
    _IEAction ($oButton, "click")
    _IELoadWait($oIE,0)
    
    ;** This is the section I cannot get to work
    $oForm1 = _IEFormGetObjByName ($oIE, "isc_historyForm")
    $test = _IEGetObjById($oForm1, "isc_1F")
    $oMenu = _IEGetObjById ($oForm1,"isc_MenuBarButton_0") ;isc_MenuBarButton_0
    ;$oMenu = _IEGetObjById ($oForm1,"isc_1E")
    _IEAction ($test, "focus")
    

    这是我要访问的区域的html - 它没有显示名称,也没有显示在选择时显示在屏幕上的任何下拉选项。

    <div id="isc_1E" eventproxy="isc_MenuBarButton_0" style="position: absolute; left: 195px; top: 0px; width: 150px; height: 24px; z-index: 200810; overflow: hidden; cursor: pointer; -webkit-margin-before-collapse: collapse; -webkit-margin-after-collapse: collapse;" onscroll="return isc_MenuBarButton_0.$lh()" onfocus="isc.EH.focusInCanvas(isc_MenuBarButton_0,true);" onblur="if(window.isc)isc.EH.blurFocusCanvas(isc_MenuBarButton_0,true);" tabindex="-1" role="button" aria-haspopup="true"><table cellspacing="0" cellpadding="0" width="150" height="24" style="table-layout:fixed"><tbody><tr><td class="menuButton" style="padding-top:0px;padding-bottom:0px;text-align:center;vertical-align:middle"><div style="display:inline-block;max-width:100%;white-space:nowrap;vertical-align:middle"><div id="isc_1D" style="overflow:hidden;text-overflow:ellipsis;text-align:left"><img src="https://training.iasdispatchmanager.com/dispatchmanager/ias/images/icons/admin.png" align="TEXTTOP" border="0" suppress="TRUE"> <b>Admin</b></div></div></td></tr></tbody></table></div>
    

1 个答案:

答案 0 :(得分:1)

第二部分不起作用。如果你得到一个表单对象

$ oForm1 = _IEFormGetObjByName($ oIE,“isc_historyForm”)

您必须继续使用此对象的元素,就像在脚本的第一个(密码)部分中完成一样。 所以你的下一个陈述可能是这样的:

$ oTest = _IEFormElementGetObjByName($ oForm1,“isc_1F”)。

将autoIt帮助文件下载为“用户定义的函数”,并查看“ie-management”的示例。 这里是下拉/选择框工作的定义和示例。 https://www.autoitscript.com/autoit3/docs/libfunctions/_IEFormElementOptionSelect.htm

你可以尝试一下。最好的问候,Reinhard