我正在尝试从自动脚本向Web应用程序发送用户名和密码。
$oIE.document.getElementsByName($formUID).Item(0).value = $Name
$oIE.document.getElementById($formPID).value = $pwd
上述这些功能在Windows 7中有效,但在Windows 8和IE 10中无法使用。任何人都可以帮助我吗?这非常重要。
答案 0 :(得分:0)
如果这些字段具有ID或NAME,则应使用
Local $oUsername = _IEGetObjById($oIE, "Username") ; _IEGetObjById or _IEGetObjByName
$oUsername.value = "myusername"
如果他们不这样做,那么你可以列出所有元素并对它们进行比较。 您可以使用:
$oInput.type
$oInput.Id
$oInput.name
$oInput.classname
$oInput.innerhtml
$oInput.outerhtml
$oInput.innertext
$oInput.outertext
etc...
示例用法:
Local $oInputs = _IETagNameGetCollection($oIE, "input")
For $oInput In $oInputs
if $oInput.type == "password" then $oInput.value = "mypassword"
if $oInput.name == "username" then $oInput.value = "myusername"
Next
如果仍然无效,请尝试使用嵌入式IE。如果有效,但你需要常规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