脚本使用IE9但与Windows 8中的IE10不兼容

时间:2014-05-21 06:12:54

标签: internet-explorer autoit

$url = "https://190.198.14.15/"
$formID = ""
$formUID = "username"
$uName = "admin"
$formPID = "password"
$pwd = "SeR^ER@iL0"
$formSubmit = "ID_LOGON"

;Launch the Internet Explorer as a private session
ShellExecute ("iexplore.exe", " -private about:blank", @programFilesDir & "\Internet Explorer\iexplore.exe", "open", @SW_MAXIMIZE)
WinWait ("Blank Page")
$oIE = _IEAttach ("about:blank", "url")

;Wait for the IE to launch
_IELoadWait ($oIE)

;Navigate to the given URL
_IENavigate ($oIE, $url)

;Get the IE process id specific to this instance
Local $PID = WinGetProcess(_IEPropertyGet($oIE, "hwnd"))

;Print the PID in the console
If $PID Then
    ;MsgBox(0, "Example", "Internet Explorer is running.")
    ;MsgBox(0,"Process ID",$PID)
    ConsoleWrite("["&$PID&"]")
Else
    MsgBox(0, "Example", "Unable to get the process id of IE instance")
EndIf

;Disable IE address bar and menu bar
_IEPropertySet ($oIE, "addressbar", False)
_IEPropertySet ($oIE, "menubar", False)

;Click on 'Continue to this website' option if there is any HTTPS certificate Warning
while(_IELinkClickByText ($oIE, "Continue to this website (not recommended)."))
        _IELoadWait ($oIE,10000)
wend

;Get the field id and fill with provided value
;$oIE.document.getElementById($formUID).value = $uName
$oIE.document.getElementsByName($formUID).Item(0).value = $uName
$oIE.document.getElementById($formPID).value = $pwd

;$oSubmit = _IEGetObjByName ($oIE, $formSubmit)
$oSubmit = $oIE.document.getElementById($formSubmit)
_IEAction ($oSubmit, "click")

其中formUID = username textbox id,uname = username,formPID = password box id,pwd = password,formSubmit = submit button id。

另一个问题是整个html页面是使用表单标记开发的。即使在IE10和Windows 8中,相同的代码也适用于使用表单标签开发的其他代码。

1 个答案:

答案 0 :(得分:1)

使用_IECreateEmbedded将使IE在兼容模式(IE8)下工作。

如果那就是你需要的,你可以运行一次这个代码,然后所有IE实例都将以兼容模式运行。

    $64Bit = ""
    If @OSArch = "X64" Then
        $64Bit = "64"
    EndIf
If StringLeft(RegRead("HKLM" & $64Bit & "\SOFTWARE\Microsoft\Internet Explorer\Version Vector", "IE"), 1) > 8 Then ;Check for version 9 or later


  $wshNetwork = ObjCreate("WScript.Network")
  $struser = $wshNetwork.Username
  $objWMIService = ObjGet("winmgmts:\\.\root\cimv2")
  $objAccount = $objWMIService.Get('Win32_UserAccount.Name="' & $struser & '",Domain="' & @ComputerName & '"')
  RegWrite("HKU" & $64Bit & "\" & $objAccount.SID & "\Software\Microsoft\Internet Explorer\BrowserEmulation\", "AllSitesCompatibilityMode", "REG_DWORD", 1)
  RegWrite("HKU\" & $objAccount.SID & "\Software\Microsoft\Internet Explorer\BrowserEmulation\", "AllSitesCompatibilityMode", "REG_DWORD", 1)
EndIf