what6621 发表于 2016-3-24 14:01:55

请问编译后。脚本提示(对变量类型必须为对象类型) 错误提示

脚本打开 在关闭 就报错。   这里的打开关闭是指   (打开脚本即可关闭)    可以运行就是 一直提示错误。在编译器里面按F5 没错误。有知道吗请教下,#RequireAdmin

#include <IE.au3>
#include <File.au3>

Dim $oIE = _IECreate("http://www.unclenoway.com/", 0, 1, 1, 0)
Sleep(1000)
$Ele = _IEGetObjById($oIE, "gender-f")
_IEAction($Ele, "click")
$Ele = _IEGetObjById($oIE, "chatbutton")
_IEAction($Ele, "click")
AdlibRegister("_check", 1000)
Func _check()
        If WinExists("叔叔不约 - 匿名聊天网 - 在线随机、匿名聊天平台 - ") = 0 Then Exit
        Local $ame = ProcessGetStats()
        If IsArray($ame) Then
                ProcessClose($ame)
        EndIf
EndFunc   ;==>_check


While 1
        Sleep(100)
        _Send()
WEnd
Func _Send()
        Local $tag = 0
        _Click()
        Sleep(4000)
        Local $COUNT = _FileCountLines(@ScriptDir & "\say.txt")
        Local $TEXT
        For $I = 1 To $COUNT
                $TEXT = FileReadLine(@ScriptDir & "\say.txt", $I)
                WinWaitActive("叔叔不约 - 匿名聊天网 - 在线随机、匿名聊天平台 - ")
                Sleep(2000)
                $Txt = _IEGetObjById($oIE, "connectBtn")
                If $Txt.innertext = "重新开始" Then
                        $tag = 1
                        ExitLoop
                EndIf
                $oIEo = _IEAttach("http://www.unclenoway.com/", "url")
                $Ele = _IETagNameGetCollection($oIE, "p", 15)
                If $Ele <> 0 Then
                        If StringInStr($Ele.outerhtml, "正在努力为你匹配...") <> 0 Then
                                ExitLoop
                        EndIf
                       
                EndIf
                $Ele = _IEGetObjById($oIE, "msgBox")
                _IEFormElementSetValue($Ele, $TEXT)
                $SEND = _IEGetObjById($oIE, "msgSend")
                _IEAction($SEND, "click")
                Sleep(5000)
        Next
        If $tag = 0 Then
                $Ele = _IEGetObjById($oIE, "connectBtn")
                _IEAction($Ele, "click")
                Sleep(100)
                $Ele = _IEGetObjById($oIE, "connectBtn")
                _IEAction($Ele, "click")
        EndIf
        Sleep(2000)
EndFunc   ;==>_Send
Func _Click()
        WinActivate("叔叔不约 - 匿名聊天网 - 在线随机、匿名聊天平台 - ")
        WinWaitActive("叔叔不约 - 匿名聊天网 - 在线随机、匿名聊天平台 - ")
        $Ele = _IEGetObjById($oIE, "connectBtn")
        Switch $Ele.innertext
                Case "离开"
                        Return 0
                Case "重新开始"
                        _IEAction($Ele, "click")
        EndSwitch
        Return 1
EndFunc   ;==>_Click

chamlien 发表于 2016-3-24 15:22:00

在编译器上错误提示都是控制台显示,属于调试型;直接运行脚本获取不到变量,就直接报错了,看一下控制台的错误提示就知道是哪一步获取不到变量了的

what6621 发表于 2016-3-24 15:31:20

不是编译器上出错。   是编译好EXE程序运行的时候打开关闭太快出错

what6621 发表于 2016-3-24 15:31:42

回复 2# chamlien
不是编译器上出错。   是编译好EXE程序运行的时候打开关闭太快出错

tank 发表于 2016-3-24 16:00:16

有一句 _IEGetObj没有成功,你的程序里都没有对结果是否成功做出判断,很容易出错的

what6621 发表于 2016-3-24 19:17:11

回复 5# tank

what6621 发表于 2016-3-24 19:18:54

回复 5# tank 请问我图片那个箭头为什么是错误对象必须是变量

tank 发表于 2016-3-25 17:21:45

程序在IE中并没有找到ID是"connectBtn"的按钮,变量的值是0,并不是一个Obj,所以出错了。
页: [1]
查看完整版本: 请问编译后。脚本提示(对变量类型必须为对象类型) 错误提示