Что нового

[Автоматизация] После выполнения скрипта, не завершаеться процесс IE

CrazyKing

Новичок
Сообщения
24
Репутация
0
Добрый день!
Помогите разобраться, пожалуйста!
Написал скрипт для входа на страницу и неких манипуляций(к примеру нажатие мышкой), скрипт все действия выполняет исправно, кроме завершения процесса IE.
Сам скрипт:
[hide]
Код:
#include <IE.au3>
#include <WindowsConstants.au3>
;=======авторизация=====================
WinSetOnTop($oIE,"",1) ;делаем окно поверх всех окон
$oForm = _IEFormGetObjByName($oIE, "loginFormBar")
$login = _IEFormElementGetObjByName($oForm, "name") ;находим строку логин по ID
_IEFormElementSetValue($login, "логин") ;вводим текст
$pass = _IEFormElementGetObjByName($oForm, "password") ;находим строку пароля по ID
_IEFormElementSetValue($pass, "пароль")  ;вводим текст
$oBtn = _IEGetObjById($oIE, "loginFormButtonBar") ;находим кнопку входа по ID
_IEAction($oBtn, "click") ;нажимаем на кнопку
sleep(2000)
;======небольшая проверка, если с первого раза не залогинился=====
$sText = _IEBodyReadHTML($oIE)
If StringInStr($sText, "Забыли пароль?") Then
   $oForm = _IEFormGetObjByName($oIE, "loginFormsBar")
   $login = _IEFormElementGetObjByName($oForms, "name") ;находим строку логин по ID
   _IEFormElementSetValue($login, "Логин") ;вводим текст
   $pass = _IEFormElementGetObjByName($oForm, "password") ;находим строку пароля по ID
   _IEFormElementSetValue($pass, "Пароль")  ;вводим текст
   $oBtn = _IEGetObjById($oIE, "loginFormsButtonBar") ;находим кнопку входа по ID
   _IEAction($oBtn, "click") ;нажимаем на кнопку
   _IENavigate ($oIE,"http://www./ru/play") ;переходим на страницу игры
 else
	 _IENavigate ($oIE,"http://www./ru/play")
EndIf
While 1
    $var = PixelGetColor(568, 240) ; цвет пикселя на данный момент времени
    $color =0x23290F ;цвет, который нужен мне
    if $var =$color Then
      MouseClick("left", 640, 835)
	  sleep(5000)
	  MouseClick("left", 640, 835)
	  sleep(5000)
	  MouseClick("left", 636, 657)
	  _IENavigate ($oIE,"http://www/logout")
    EndIf
    Sleep(100)
 WEnd
;===и этот кусок как будто не видит!!:(
 $PIDs = ProcessList('iexplore.exe') ;Возвращает двумерный массив, содержащий список выполняемых процессов (имя и PID).
For $i = 1 To $PIDs[0][0] ;$PIDs[0][0] - это количество процессов
    If ProcessExists($PIDs[$i][1]) Then ProcessClose($PIDs[$i][1]) ;Если процесс существует, то закрываем его
Next
[/hide]
Заранее благодарю!
 
Автор
CrazyKing

CrazyKing

Новичок
Сообщения
24
Репутация
0
К сожалению не помогло:(
Раньше был такой скрипт:[hide]
Код:
$oIE = _IECreate("http://www.")
WinSetOnTop($oIE,"",1)
sleep(2000)
$oIE2= WinGetHandle("Главная страница - Internet Explorer") ;Заменить название окна
$oForm = _IEFormGetObjByName($oIE, "loginFormsBar")
$login = _IEFormElementGetObjByName($oForms, "name")
$pass = _IEFormElementGetObjByName($oForms, "password")
_IEFormElementSetValue($login, "логин")
_IEFormElementSetValue($pass, "пасс")
sleep(2000)
ControlSend($oIE2, "", "", "{TAB 4}")
ControlSend($oIE2, "", "", "{ENTER}") ;Нажимаем ВВОД
sleep(2000)
_IENavigate ($oIE,"http://www./ru/play")
sleep(25000)
$oIE3= WinGetHandle("The  - Internet Explorer")
ControlSend($oIE3, "", "", "{TAB 6}")
ControlSend($oIE3, "", "", "{space 2}")
Sleep(3000)
ControlSend($oIE3, "", "", "{TAB 3}")
ControlSend($oIE3, "", "", "{space 2}")
Sleep(3000)
ControlSend($oIE3, "", "", "{TAB 1}")
ControlSend($oIE3, "", "", "{space 2}")
Sleep(3000)
ControlSend($oIE3, "", "", "{TAB 11}")
ControlSend($oIE3, "", "", "{space 1}")
sleep(5000)
_IENavigate ($oIE,"http:///logout")
Sleep(3000)
ProcessClose("iexplore.exe")
[/hide]
Отрабатывал нормально и закрывал окно. Сейчас же получается что после
Код:
_IENavigate ($oIE,"http://www.ogout")
    EndIf
    Sleep(100)
 WEnd

он нечего не делает. Хотя пробовал выводить сообщение, оно появляется поле того как я сам закрою окно.
 
Автор
CrazyKing

CrazyKing

Новичок
Сообщения
24
Репутация
0
Смысл уловил, тогда возможно подскажите как в моём случае использовать ExitLoop, если его просто воткнуть в конце, то не ждёт появления цвета. Как бы правильно сделать условия, что бы он искал пиксель и при этом не был бесконечным?
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
CrazyKing [?]
что бы он искал пиксель и при этом не был бесконечным
Код:
...
      MouseClick("left", 636, 657)
      _IENavigate ($oIE,"http://www.thesettlersonline.ru/ru/logout")
      ExitLoop ; <= добавить
    EndIf
    Sleep(100)
 WEnd
 
Автор
CrazyKing

CrazyKing

Новичок
Сообщения
24
Репутация
0
Так же подумал, что не туда запихнул:smile:
Раз вроде бы сработало, но потом после разлогина висит окно IE и не закрывается, скрипт при этом тоже работает.
Вот как написал сейчас:
Код:
While 1
    $var = PixelGetColor(568, 254) ; цвет пикселя на данный момент времени
    $color =0x23290F ;цвет, который нужен мне
    if $var =$color Then
      MouseClick("left", 640, 835)
	  sleep(5000)
	  MouseClick("left", 640, 835)
	  sleep(5000)
	  MouseClick("left", 636, 657)
	  _IENavigate ($oIE,"http://www.gout")
	  ExitLoop
    EndIf
    Sleep(100)
 WEnd
 Sleep(15000)
_IEQuit ($oIE)





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

Пробовал ещё вот так:
Код:
While 1
If IsArray(PixelSearch(568,246,568,240,0x23290F)) then ExitLoop
       Sleep(100)
   WEnd

      MouseClick("left", 640, 835)
	  sleep(5000)
	  MouseClick("left", 640, 835)
	  sleep(5000)
	  MouseClick("left", 636, 657)
	  _IENavigate ($oIE,"http:///ru/logout")
	  sleep(5000)
	  ProcessClose("iexplore.exe")

Мышкой все действия происходят, разлогиневание тоже, но IE так и не закрывается :stars:


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

Убрал
Код:
_IENavigate ($oIE,"http://www./ru/logout")
и всё замечательно сработало :shok:, что ему не нравиться в этой функции? Причём выше по скрипту он её нормально выполняет. :-X
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
CrazyKing [?]
что ему не нравиться в этой функции
Третьим параметром в этой функции идёт ожидание загрузки страницы (по умолчанию - ждать). Вероятно, у вас страница полностью не загружается (по меркам IE) и он ждёт загрузки. Установите этот параметр в ноль - посмотрите, что будет.
 
Автор
CrazyKing

CrazyKing

Новичок
Сообщения
24
Репутация
0
Изменил параметр на "0", всё заработало, походу IE действительно подтупливал. Ну я нашёл альтернативный путь, просто за место использования ссылки, тыкал мышкой.
Спасибо Вам за помощь! :beer:
 
Верх