Что нового

Некорректно срабатывает функция внутри цикла

ahees

Новичок
Сообщения
7
Репутация
0
Доброго времени суток.
Сразу без лирического вступления. Есть страница сайта, которая циклично меняет свое содержимое и нужно по 4 уникальным признакам(элементы) определять действия.
Код:
....
$a     = __textproverka('text1');уникальный э-нт на странице
$a_dis = __textproverka('text2');уникальный э-нт на странице, который видим когда текст1 нету
$b     = __textproverka('text3');уникальный э-нт на странице
$b_dis = __textproverka('text4');уникальный э-нт на странице, который видим когда текст3 нету

Do
	$forma = __textproverka('form');проверка есть ли наша форма на странице
	ConsoleWrite($k & @CRLF)
	$k = __check($a,$a_dis,$b,$b_dis)
	Sleep(1000)
	
	#cs
	здесь будет switch-case, в зависимости от значения $k
	#ce

Until $forma = 0



Func __check ($a,$a_dis,$b,$b_dis)
	#cs
	получаем какие эн-ты видимые и отдаем значение $check для
	дальнейшего определения действий. $check[1..4]
	#ce
	Local $check
	If $a = 1 And $a_dis = 0 And $b = 0 And $b_dis = 0 Then
		$check = 1
	EndIf
	If $a = 0 And $a_dis = 1 And $b = 0 And $b_dis = 0 Then
		$check = 2
	EndIf
	If $a = 0 And $a_dis = 0 And $b = 1 And $b_dis = 0 Then
		$check = 3
	EndIf
	If $a = 0 And $a_dis = 0 And $b = 0 And $b_dis = 1 Then
		$check = 4
	EndIf
	Return $check
EndFunc

	


Func __textproverka($textaction); проверка наличия на странице
	$x1 = 0
	$oLinks =  _IEBodyReadHTML($Frame)
	If StringInStr($oLinks, $textaction) > 0 Then
		$x1 = 1
		ConsoleWrite('++' & @CRLF)
		Return $x1
	 Else
        $x1 = 0
		ConsoleWrite('--' & @CRLF)
        Return $x1
	EndIf
EndFunc
...
Проблема в том, что функция определения действия всегда отдает 1 или 0. Поодиночке все элементы находятся на странице, так что проблема не в правильности выбора уникальности энтов. Пробовал не через чтение текста html для нахождения элементов, а через селекторы и проверку через IsObj - результат подобный.
Буду рад помощи, как оптимизировать поиск и определения наличия нужных элементов
 
A

Alofa

Гость
ahees вы меня извините, но складывается такое впечатление, что о существовании справки вы не в курсе.

Вы чего хотите, чтобы вам указали на ошибки в скрипте или выложили готовый?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
у Вас проверка уникального элемента на странице находится вне цикла и по-этому значения переменных "$a,$a_dis,$b,$b_dis" Вы получаете при старте скрипта и в дальнейшем они не изменяются, так-же
Код:
ConsoleWrite($k & @CRLF)
Вы вызываете ещё до определения самого значения "$k".
 
Автор
A

ahees

Новичок
Сообщения
7
Репутация
0
ra4o сказал(а):
у Вас проверка уникального элемента на странице находится вне цикла и по-этому значения переменных "$a,$a_dis,$b,$b_dis" Вы получаете при старте скрипта и в дальнейшем они не изменяются, так-же
Код:
ConsoleWrite($k & @CRLF)
Вы вызываете ещё до определения самого значения "$k".
Да, верно. После переписания скрипта под цикл пропустил внесение переменных внутрь тела цикла. Исправил еще позавчера, но спасибо что откликнулись.
 
Верх