Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: N-Ban on September 04, 2014, 10:39:09 AM

Title: Странное поведение скрипта
Post by: N-Ban on September 04, 2014, 10:39:09 AM
Странное поведение скрипта порой он отрабатывается верно но периодически может просто завершиться. Переменная $err каким то чудом достигает значения больше 3 хотя должна ловиться циклом. Может есть какие то исключения?

Скрипт в яндексе набирает запрос делает скрин и ищет на нем фавикон саита если не находит двигает на экран ниже и еше раз делает скрин и ищет и еше раз так три раза за это отвечает $err. Если за три движения в низ не находиться он ищет кнопку далее также по скрину. И все по новой. Фавикон и кнопку он находит проверял в отдельном скрипте

Code: [Select]
#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
Title: Re: Странное поведение скрипта
Post by: Atas on September 04, 2014, 01:10:20 PM
В редакторе Кликермана, вверху, есть такая удобная волшебная палочка "Расставить отступы" --> (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)
Title: Re: Странное поведение скрипта
Post by: Oraven on September 04, 2014, 01:24:22 PM
 Этого нельзя делать, системные переменные служат только для вывода значений из функций, их нельзя удалить, а попытка записи в них приведет к созданию НЕ системной переменной с таким же названием и потом значение никогда не изменится.
Code: (clickermann) [Select]
  $_return1 = 0
   $_return2 = 0

Вот верный код, только нет вызова подпрограммы find

Code: (clickermann) [Select]
#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
Title: Re: Странное поведение скрипта
Post by: N-Ban on September 04, 2014, 03:39:19 PM
Што то пошло не так
Такое  чувство что он игнорирует некоторые команды сеичас он не входит в второй if и не считает переменую $err на скрине я уже изменил код но с оригинальным тоже самое и нет вывода в лог
(http://s58.radikal.ru/i160/1409/64/17817b364b92.png)
Title: Re: Странное поведение скрипта
Post by: Oraven on September 04, 2014, 06:03:43 PM
А как он в него войдет если if ($err = 3) а до того нигде этой $err нет?
Title: Re: Странное поведение скрипта
Post by: N-Ban on September 04, 2014, 07:23:17 PM
Есть вот такая конструкция на скрине видно или она здесь не работает?
$err= $err+1
И странно почему не выводит в логах?
Title: Re: Странное поведение скрипта
Post by: Oraven on September 04, 2014, 11:03:37 PM
Есть вот такая конструкция на скрине видно или она здесь не работает?
$err= $err+1
И странно почему не выводит в логах?

Сундук заперт а ключ лежит в нутри...
Title: Re: Странное поведение скрипта
Post by: N-Ban on September 04, 2014, 11:48:42 PM
Хорошая аналогия)
понял в чем дело
теперь проблема вот с этим куском отдельно он отрабатывается а в скрипте нет хотя переход на него осуществляется.
А да и чо с логами то?

Code: [Select]
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


Весь код
Code: [Select]
#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
Title: Re: Странное поведение скрипта
Post by: Луций on September 05, 2014, 11:20:15 PM
думаю проблема в этом:

KEYSTRING ("bzors")

и еще err = 3 никогда не будет
Title: Re: Странное поведение скрипта
Post by: N-Ban on September 05, 2014, 11:47:47 PM
Я заметил ошибку по поводу $err и вынес за if ее
а в чем в кеустринге проблема?