Что нового

Заполнение веб формы с циклами

ivegan

Новичок
Сообщения
2
Репутация
0
Добрый день. Я пишу скрипт для заполнения формы, места ввода информации нахожу поиском с подсветкой найденного, и по цвету найденного совершаю клик и ввод. У меня вопрос как зациклить выполнение куска кода подпрограммы? Так то всё работает, но один раз, а мне цикл нужен.

Основной скрипт
Код:
Sleep(500)
WinActivate("АС СиОИ — Яндекс.Браузер")
	Sleep(1000)
Send("{APPSKEY}")
Send("{DOWN}")
	Sleep(100)
Send("{ENTER}")
Send("^{TAB}")
	Sleep(3000) ; three seconds

	$var =1							;~блок ожидания цвета
Do
    Sleep(100)
    $var = PixelGetColor(55, 555)
Until $var=0xFFFFFF

									;~блок поиска
Send("{F3}")
	Sleep(100)
				Send("металлическая")
	Sleep(100)
Send("{ENTER}")
	Sleep(200)
												   ;~блок поиска цвета и клик
$coord = PixelSearch( 0, 90, 1500, 860, 0xFFA328 )
MouseClick("left", $coord[0] + 660, $coord[1] + 60)

Send("+{TAB}")
Send("+{TAB}")

#include <sub.au3>						;~ уходим в подпрограмму

Exit


Подпрограмма которую надо зациклить.
Код:
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{SPACE}")
	Sleep(5000)
															;~блок поиска
Send("{F3}")
	Sleep(100)
				Send("заземления (")
	Sleep(100)
Send("{ENTER}")
	Sleep(200)
															;~блок поиска цвета и клик
$coord = PixelSearch(0, 90, 1500, 860, 0xFFA328 )
MouseClick("left", $coord[0],$coord[1])
	Sleep(1000)
															;~блок поиска
Send("{F3}")
	Sleep(100)
				Send("повреждение")
	Sleep(100)
Send("{ENTER}")
	Sleep(200)

	Sleep(400)
$coord = PixelSearch(500, 90, 1500, 860, 0xFFA328 )
$cvet=0xEEEEEE
$var = PixelGetColor($coord[0]+500,$coord[1]-100)
If	$var=$cvet Then
	MouseClick("left", $coord[0]+463,$coord[1]-155)
EndIf
Sleep(100)

MouseMove($coord[0]+500,$coord[1]-100)
MouseClick("left")
MouseClick("left")
MouseClick("left")
Send("{DELETE}")

$n=1
#include <file.au3>
Dim $aRecords
If Not _FileReadToArray("D:\autoit.txt",$aRecords) Then
   MsgBox(4096,"Error", " Error reading log to Array     error:" & @error)
   Exit
EndIf
Send($aRecords[$n])
$n+=1
Send("{TAB}")
Send($aRecords[$n])
															;~блок поиска, цвет и клик
Send("{F3}")
	Sleep(100)
				Send("сохранить")
	Sleep(100)
Send("{ENTER}")
	Sleep(200)

$coord = PixelSearch(0, 90, 1500, 860, 0xFFA328 )
MouseClick("left", $coord[0],$coord[1])
	Sleep(1000)												;конец блока

Send("{TAB}")
															;~проверка окончания
$coord = PixelSearch( 888,95,1030,860, 0xEBEBEB )
If @error Then
    Sleep(100)
Else
	Send("{F3}")
	Sleep(100)
				Send("заверш")
	Sleep(100)
Send("{ENTER}")
	Sleep(200)
															;~блок поиска цвета и клик
$coord = PixelSearch(0, 90, 1500, 860, 0xFFA328 )
MouseMove($coord[0],$coord[1])
	Sleep(1000)
EndIf
 Sleep(200)
 Send("^w") ;закрыть вкладку


Смотрел в сторону Func? но так и не понял как использовать и внедрить в цикл. include тоже в цикл на получается, весь кусок кода подпрограммы в цикл не влазит - ругается.
Прошу помощи.
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Код:
#include <file.au3>

Sleep(500)
WinActivate("АС СиОИ — Яндекс.Браузер")
Sleep(1000)
Send("{APPSKEY}")
Send("{DOWN}")
Sleep(100)
Send("{ENTER}")
Send("^{TAB}")
Sleep(3000) ; three seconds

$var =1	;~блок ожидания цвета
Do
    Sleep(100)
    $var = PixelGetColor(55, 555)
Until $var=0xFFFFFF

;~блок поиска
Send("{F3}")
Sleep(100)
Send("металлическая")
Sleep(100)
Send("{ENTER}")
Sleep(200)
;~блок поиска цвета и клик
$coord = PixelSearch( 0, 90, 1500, 860, 0xFFA328 )
MouseClick("left", $coord[0] + 660, $coord[1] + 60)

Send("+{TAB}")
Send("+{TAB}")

While 1;~ уходим в цикл с подпрограммой
	_123()
WEnd

Func _123()
	Send("{TAB}")
	Send("{TAB}")
	Send("{TAB}")
	Send("{SPACE}")
    Sleep(5000)
	;~блок поиска
	Send("{F3}")
    Sleep(100)
	Send("заземления (")
    Sleep(100)
	Send("{ENTER}")
    Sleep(200)
	;~блок поиска цвета и клик
	$coord = PixelSearch(0, 90, 1500, 860, 0xFFA328 )
	MouseClick("left", $coord[0],$coord[1])
    Sleep(1000)
	;~блок поиска
	Send("{F3}")
    Sleep(100)
	Send("повреждение")
    Sleep(100)
	Send("{ENTER}")
    Sleep(200)

    Sleep(400)
	$coord = PixelSearch(500, 90, 1500, 860, 0xFFA328 )
	$cvet=0xEEEEEE
	$var = PixelGetColor($coord[0]+500,$coord[1]-100)
	If  $var=$cvet Then
		MouseClick("left", $coord[0]+463,$coord[1]-155)
	EndIf
	Sleep(100)

	MouseMove($coord[0]+500,$coord[1]-100)
	MouseClick("left")
	MouseClick("left")
	MouseClick("left")
	Send("{DELETE}")

	$n=1
	Dim $aRecords
	If Not _FileReadToArray("D:\autoit.txt",$aRecords) Then
		MsgBox(4096,"Error", " Error reading log to Array     error:" & @error)
		Exit
	EndIf
	Send($aRecords[$n])
	$n+=1
	Send("{TAB}")
	Send($aRecords[$n])
	;~блок поиска, цвет и клик
	Send("{F3}")
	Sleep(100)
	Send("сохранить")
	Sleep(100)
	Send("{ENTER}")
	Sleep(200)

	$coord = PixelSearch(0, 90, 1500, 860, 0xFFA328 )
	MouseClick("left", $coord[0],$coord[1])
	Sleep(1000)	;конец блока

	Send("{TAB}")
	;~проверка окончания
	$coord = PixelSearch( 888,95,1030,860, 0xEBEBEB )
	If @error Then
		Sleep(100)
	Else
		Send("{F3}")
		Sleep(100)
		Send("заверш")
		Sleep(100)
		Send("{ENTER}")
		Sleep(200)
		;~блок поиска цвета и клик
		$coord = PixelSearch(0, 90, 1500, 860, 0xFFA328 )
		MouseMove($coord[0],$coord[1])
		Sleep(1000)
	EndIf
	Sleep(200)
	Send("^w") ;закрыть вкладку
EndFunc
 
Автор
I

ivegan

Новичок
Сообщения
2
Репутация
0
Dima1337, спасибо большое, работает.

А можно как-то сделать чтобы основная программа тоже была функцией в цикле?
После активации окна Большой цикл с функцией, а внутри цикла функция в цикле? Строки 7-11, 13, 134-136 элементы большого цикла . Код привожу, он даёт ошибку Line 44 Func_123() Error: "Func" statement has no matching "EndFunc".

Код:
#include <file.au3>
$n=1

Sleep(500)
WinActivate("АС СиОИ — Яндекс.Браузер")

$i = 0
   While $i <= 10;~ уходим в большой цикл
    _bc()
	$i = $i + 1
 WEnd

Func _bc()
Sleep(1000)
Send("{APPSKEY}")
Sleep(100)
Send("{DOWN}")
Sleep(200)
Send("{ENTER}")
Sleep(100)
Send("^{TAB}")
Sleep(3000) ; three seconds

$var =1 ;~блок ожидания цвета
Do
    Sleep(50)
    $var = PixelGetColor(55, 555)
Until $var=0xFFFFFF

;~блок поиска
Send("{F3}")
Sleep(200)
Send("металлическая")
Sleep(200)
Send("{ENTER}")
Sleep(200)
;~блок поиска цвета и клик
$coord = PixelSearch( 0, 90, 1500, 860, 0xFFA328 )
MouseClick("left", $coord[0] + 660, $coord[1] + 60)

Send("+{TAB}")
Send("+{TAB}")

Func _123()
    Send("{TAB}")
    Send("{TAB}")
    Send("{TAB}")
    Send("{SPACE}")
    Sleep(5000)
    ;~блок поиска
    Send("{F3}")
    Sleep(200)
    Send("заземления (")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    ;~блок поиска цвета и клик
    $coord = PixelSearch(0, 90, 1500, 860, 0xFFA328 )
    MouseClick("left", $coord[0],$coord[1])
    Sleep(1000)
    ;~блок поиска
    Send("{F3}")
    Sleep(200)
    Send("повреждение")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)

    Sleep(400)
    $coord = PixelSearch(500, 90, 1500, 860, 0xFFA328 )
    $cvet=0xEEEEEE
    $var = PixelGetColor($coord[0]+500,$coord[1]-100)
    If  $var=$cvet Then
        MouseClick("left", $coord[0]+463,$coord[1]-155)
    EndIf
    Sleep(100)

    MouseMove($coord[0]+500,$coord[1]-100)
    MouseClick("left")
    MouseClick("left")
    MouseClick("left")
    Send("{DELETE}")

    Dim $aRecords
    If Not _FileReadToArray("D:\autoit.txt",$aRecords) Then
        MsgBox(4096,"Error", " Error reading log to Array     error:" & @error)
        Exit
    EndIf
    Send($aRecords[$n])
    $n+=1
    Send("{TAB}")
    Send($aRecords[$n])
    ;~блок поиска, цвет и клик
    Send("{F3}")
    Sleep(100)
    Send("сохранить")
    Sleep(100)
    Send("{ENTER}")
    Sleep(200)

    $coord = PixelSearch(0, 90, 1500, 860, 0xFFA328 )
    MouseClick("left", $coord[0],$coord[1])
    Sleep(1000)
	;конец блока

    Send("{TAB}")
	Sleep(1000)
    ;~проверка окончания
    $coord = PixelSearch( 888,95,1030,860, 0xEBEBEB )
    If @error Then
        Sleep(100)
	Else
        Send("{F3}")
        Sleep(100)
        Send("заверш")
        Sleep(100)
        Send("{ENTER}")
        Sleep(200)
        ;~блок поиска цвета и клик
        $coord = PixelSearch(0, 90, 1500, 860, 0xFFA328 )
        MouseMove($coord[0],$coord[1])
        Sleep(1000)
		Send("^w") ;закрыть вкладку
		 Sleep(200)
		 Exit
	  EndIf
	  Send("+{TAB}")
   EndFunc

   While 1;~ уходим в цикл с подпрограммой
    _123()
 WEnd

Send("{TAB}")
Send("{TAB}")
 EndFunc     ;конец большого цикла
 
Верх