Автокликер Clickermann :: Форум
		Основной раздел => Общие вопросы => Topic started by: N-Ban on September 04, 2014, 10:39:09 AM
		
			
			- 
				Странное поведение скрипта порой он отрабатывается верно но периодически может просто завершиться. Переменная $err каким то чудом достигает значения больше 3 хотя должна ловиться циклом. Может есть какие то исключения?
Скрипт в яндексе набирает запрос делает скрин и ищет на нем фавикон саита если не находит двигает на экран ниже и еше раз делает скрин и ищет и еше раз так три раза за это отвечает $err. Если за три движения в низ не находиться он ищет кнопку далее также по скрину. И все по новой. Фавикон и кнопку он находит проверял в отдельном скрипте
#name "search in Yandex"
$zapros = "obzor"
$page_all = 50
$brawser = "chrome.exe"
 
SUB(find)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYDOWN (#f)
   WAITMS (50)
   KEYUP (#f)
   KEYUP (#CTRL)
   WAITMS(500)
   KEYSTRING ("obzor")
END_SUB
 
//==============================================================================
 
LOGCLEAR
EXECUTE("chrome", "--incognito")
   WAIT(3)
	 KEYSTRING ("ya.ru")
	 KEYPRESS (#ENTER)
WAIT(5) 
KEYSTRING ("bzors")
KEYPRESS (#ENTER)
WAIT(5)
FOR($page=0, $page<$page_all)
  $_return1 = 0
  $_return2 = 0
			GETSCREEN
 			IF_PICTURE_IN (0,0,$_xmax, $_ymax,"somefile.bmp")
                        LOGWRITE  ("NormalScren")
			END_IF
                        WAIT(1)
  			    LOGWRITE  ($_return1)            
  			    LOGWRITE  ($_return2)
	  		if ($_return1 > 0)
			   lclick($_return1 + 30, $_return2 + 35)
					 HALT
			else
			   KEYPRESS (#PAGEDOWN) 
                        end_if
                 	if ($err = 3)
			   GETSCREEN
 			   IF_PICTURE_IN (0,0,$_xmax, $_ymax,"next.bmp")        END_IF   
  			      LOGWRITE  ("nextScreen")
  			      LOGWRITE  ($_return1)            
  			      LOGWRITE  ($_return2)
						lclick($_return1 + 5, $_return2 + 5)
						WAIT(1)
						$err = 0
				END_IF	 
			$err = $err + 1	
			 LOGWRITE  ($err)											
   
END_CYC
HALT
			 
			
			- 
				В редакторе Кликермана, вверху, есть такая удобная волшебная палочка "Расставить отступы" --> (http://s1.hostingkartinok.com/uploads/images/2014/09/64a51a828cceb604a21c76908c7fd15d.png) (http://hostingkartinok.com/show-image.php?id=64a51a828cceb604a21c76908c7fd15d), ее использование повышает читаемость скрипта и помогает увидеть ошибки.
(http://s1.hostingkartinok.com/uploads/images/2014/09/4f83be260541f524d32db36050abb0b6.png) (http://hostingkartinok.com/show-image.php?id=4f83be260541f524d32db36050abb0b6)
			 
			
			- 
				 Этого нельзя делать, системные переменные служат только для вывода значений из функций, их нельзя удалить, а попытка записи в них приведет к созданию НЕ системной переменной с таким же названием и потом значение никогда не изменится.
  $_return1 = 0
   $_return2 = 0
Вот верный код, только нет вызова подпрограммы find
#name "search in Yandex"
$zapros = "obzor"
$page_all = 50
$brawser = "chrome.exe"
SUB(find)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYDOWN (#f)
   WAITMS (50)
   KEYUP (#f)
   KEYUP (#CTRL)
   WAITMS(500)
   KEYSTRING ("obzor")
END_SUB
//==============================================================================
LOGCLEAR
EXECUTE("chrome", "--incognito")
WAIT(3)
KEYSTRING ("ya.ru")
KEYPRESS (#ENTER)
WAIT(5)
KEYSTRING ("bzors")
WAITMS(50)
KEYPRESS (#ENTER)
WAIT(5)
FOR($page=0, $page<$page_all)
   GETSCREEN
   IF_PICTURE_IN (0,0,$_xmax, $_ymax,"somefile.bmp")
      LOGWRITE  ("NormalScren: ", $_return1, " ", $_return2)
      lclick($_return1 + 30, $_return2 + 35)
      HALT
   else
      KEYPRESS (#PAGEDOWN)
   END_IF
   WAIT(1)
   
   if ($err = 3)
      GETSCREEN
      IF_PICTURE_IN (0,0,$_xmax, $_ymax,"next.bmp")
         LOGWRITE  ("nextScreen: ", $_return1, " ", $_return2)
         lclick($_return1 + 5, $_return2 + 5)
         WAIT(1)
         $err = 0
      END_IF
      INC($err,1)
      LOGWRITE ($err)
   END_IF
END_CYC
HALT
			 
			
			- 
				Што то пошло не так
Такое  чувство что он игнорирует некоторые команды сеичас он не входит в второй if и не считает переменую $err на скрине я уже изменил код но с оригинальным тоже самое и нет вывода в лог 
(http://s58.radikal.ru/i160/1409/64/17817b364b92.png)
			 
			
			- 
				А как он в него войдет если if ($err = 3) а до того нигде этой $err нет? 
			
 
			
			- 
				Есть вот такая конструкция на скрине видно или она здесь не работает?
$err= $err+1
И странно почему не выводит в логах?
			 
			
			- 
				
Есть вот такая конструкция на скрине видно или она здесь не работает?
$err= $err+1
И странно почему не выводит в логах?
Сундук заперт а ключ лежит в нутри...
			 
			
			- 
				Хорошая аналогия)
понял в чем дело 
теперь проблема вот с этим куском отдельно он отрабатывается а в скрипте нет хотя переход на него осуществляется.
А да и чо с логами то?
if ($err = 3)
      GETSCREEN
      IF_PICTURE_IN (0,0,$_xmax, $_ymax,"next.bmp")
         LOGWRITE  ("nextScreen: ", $_return1, " ", $_return2)
         lclick($_return1 + 5, $_return2 + 5)
         WAIT(1)
         $err = 0
      END_IF
Весь код
#name "search in Yandex"
$zapros = "obzor"
$page_all = 50
$brawser = "chrome.exe"
 
SUB(find)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYDOWN (#f)
   WAITMS (50)
   KEYUP (#f)
   KEYUP (#CTRL)
   WAITMS(500)
   KEYSTRING ("obzor")
END_SUB
 
//==============================================================================
 
LOGCLEAR
 
EXECUTE("chrome", "--incognito")
WAIT(10)
 
KEYSTRING ("ya.ru")
KEYPRESS (#ENTER)
WAIT(5)
KEYSTRING ("bzors")
WAITMS(50)
KEYPRESS (#ENTER)
 
WAIT(5)
 
FOR($page=0, $page<$page_all)
   GETSCREEN
   IF_PICTURE_IN (0,0,$_xmax, $_ymax,"somefile.bmp")
      LOGWRITE  ("NormalScren: ", $_return1, " ", $_return2)
      lclick($_return1 + 30, $_return2 + 35)
      HALT
   else
      KEYPRESS (#PAGEDOWN)
   END_IF
   WAIT(1)
 
   if ($err = 3)
      GETSCREEN
      IF_PICTURE_IN (0,0,$_xmax, $_ymax,"next.bmp")
         LOGWRITE  ("nextScreen: ", $_return1, " ", $_return2)
         lclick($_return1 + 5, $_return2 + 5)
         WAIT(1)
         $err = 0
      END_IF
			 
     
      LOGWRITE ($err)
   END_IF
   $err=$err+1
END_CYC
 
HALT
			 
			
			- 
				думаю проблема в этом:
KEYSTRING ("bzors")
и еще err = 3 никогда не будет
			 
			
			- 
				Я заметил ошибку по поводу $err и вынес за if ее 
а в чем в кеустринге проблема?