Что нового

Не получается закрыть страницу при выполнении скрипта в цикле

darow

Новичок
Сообщения
50
Репутация
1
Всем здравствуйте, возникла такая проблема: скрипт отрабатывает нормально на всех этапах. Но на сайте где он работает возникает ситуация где скрипту надо проверять состояние нажатия кнопки "оформить" и если при нажатии появляется надпись "изменения в линии" он повторно нажимает "оформить" и так далее... но вот когда нажатие на "оформить" прошло успешно-это означает что скрипт все сделал нормально и можно закрыть IE, и закончить работу... но на самом деле страница IE упорно не хочет закрываться, и мы не можем разорвать этот цикл с проверкой:

Код:
Opt("TrayIconDebug", 1)
#include <IE.au3>
Global $filename = "C:\Users\Арсений\Desktop\betcityru\signals.txt"

Local $time1, $time2
$time1 = FileGetTime($filename, 0, 1)
While 1
    $time2 = FileGetTime($filename, 0, 1)
    If $time1 <> $time2 Then
        $time1 = $time2
        _action1()
    EndIf
    Sleep(1000)
WEnd

Func _action1()

Global $sLogin = "g 5627140"
Global $sPassword = "340572"

_IELoadWaitTimeout(10000)
Do
$oIE = _IECreate("http://betsbc.com/")
If @error Then ExitLoop

$oFrame1 = _IEFrameGetCollection($oIE, 0)
If @error Then ExitLoop

For $c = 1 To 5
$oForm = _IETagNameGetCollection($oFrame1, "form", 0)
If @error = 0 Then ExitLoop
Sleep(1000)
Next

$oLogin = _IEGetObjByName($oForm, "login")
_IEFormElementSetValue($oLogin, $sLogin)
If @error Then ExitLoop

$oPassword = _IEGetObjByName($oForm, "pwd")
_IEFormElementSetValue($oPassword, $sPassword)
If @error Then ExitLoop

_IEFormSubmit($oForm, 0)
;If @error Then ExitLoop
Until 1

Sleep(5000)

$hFile = FileOpen($filename, 0)
If $hFile = -1 Then
    MsgBox(4096, "Ошибка", "Невозможно открыть данный файл")
    Exit
EndIf
_IENavigate($oIE, "http://betsbc.com/live/line.php")

$sLine = FileReadLine($hFile, -1)
If @error = -1 Then
    MsgBox(4096, "Ошибка", "Не вышло прочитать данные")
    Exit
EndIf
Sleep(2000)

FileClose($hFile)

$sMyString=StringRegExpReplace($sLine, ".*?В матче среди: (.*?) .*", "\1", 0)
$oLinks = _IELinkGetCollection($oIE)
For $oLink In $oLinks
    $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
        _IEAction($oLink, "click")
        ExitLoop
    EndIf
Next

Sleep(2000)

$K = StringRegExpReplace($sLine, ".*циент\s(\d).*", "$1")
$Stand = StringRegExpReplace($sLine, ".*чет.+?(\d.*)", "$1")

If $K = 2 And $Stand = "0:0" Then
    $Btn = 314
ElseIf $K = 1 And $Stand = "0:0" Then
    $Btn = 313
ElseIf $K = 2 And ($Stand = "1:0" OR $Stand = "0:1") Then
    $Btn = 357
ElseIf $K = 1 And ($Stand = "1:0" OR $Stand = "0:1") Then
    $Btn = 356
ElseIf $K = 2 And $Stand = "1:1" Then
    $Btn = 2
ElseIf $K = 1 And $Stand = "1:1" Then
    $Btn = 1
Else
    $Btn = "Undefined"
EndIf

ConsoleWrite('->' & $Btn & @CRLF)

$oLinks = _IETagNameGetCollection($oIE, "a")
If IsObj($oLinks) Then
    For $oLink In $oLinks
;~     ConsoleWrite('2->' &  2& @CRLF)
        If StringRegExp($oLink.href,'http://betsbc\.com/left\.php\?livebet=\d+\.'&$Btn) Or StringInStr($oLink.getAttribute('onclick'), 'return al();') Then
			$AttachLink = $oLink.href
            ConsoleWrite("href: "&$oLink.href&@CRLF)
            _IEAction($oLink, "click")
			Sleep(5000)
			$oIE2 = _IEAttach($AttachLink, "URL")
$Bet="1" ; Ставка
For $k = 1 To 5
$oForm = _IEFormGetCollection ($oIE2, 0)
$oQuery = _IEFormElementGetCollection ($oForm, 0)
_IEFormElementSetValue ($oQuery, $Bet)
$oSubm = _IEGetObjByName($oQuery, "lb")
_IEAction($oSubm, "click")
Sleep(500)
For $c = 1 To 10
$attr = $oSubm.getAttribute("disabled")
ConsoleWrite("disabled attribute value: " & $attr & @CRLF)
If (@error = 0) And ($attr = "false" Or Not $attr) Then ExitLoop
Sleep(1000)
Next
$sBodySource = _IEBodyReadHTML($oIE2)
If Not StringInStr($sBodySource, "Изменения в линии") Then ExitLoop
If StringInStr($sBodySource, "Ваша ставка принята") Then ExitLoop
Sleep(1000)
Next
Sleep(5000)
            WinClose("[CLASS:IEFrame]")
            ExitLoop
        EndIf
    Next
EndIf
EndFunc

подскажите, что мы делаем не так? заранее спасибо
 

Dm666

Осваивающий
Сообщения
225
Репутация
48
А если прописать после For $c = 1 To 10
Код:
If Not IsObj($oSubm) Then ExitLoop

Не поможет? У меня вроде работает.
 
Автор
D

darow

Новичок
Сообщения
50
Репутация
1
сейчас попробуем


Добавлено:
Сообщение автоматически объединено:

похоже работает!!! спасибо огромное, Dm666
 
Верх