在过去48小时内,我一直在努力创建一个可以在Internet Explorer中执行一些基本操作的脚本:
我登录网站没有问题,但是一旦我登录,我似乎无法使菜单正常工作。我感觉这与动态创建它们有关,但我的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>
答案 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