Author Topic: Странное поведение скрипта  (Read 4232 times)

0 Members and 1 Guest are viewing this topic.

N-Ban

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Странное поведение скрипта
« 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
« Last Edit: September 04, 2014, 10:45:27 AM by N-Ban »

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Re: Странное поведение скрипта
« Reply #1 on: September 04, 2014, 01:10:20 PM »
В редакторе Кликермана, вверху, есть такая удобная волшебная палочка "Расставить отступы" --> , ее использование повышает читаемость скрипта и помогает увидеть ошибки.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Странное поведение скрипта
« Reply #2 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

N-Ban

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Странное поведение скрипта
« Reply #3 on: September 04, 2014, 03:39:19 PM »
Што то пошло не так
Такое  чувство что он игнорирует некоторые команды сеичас он не входит в второй if и не считает переменую $err на скрине я уже изменил код но с оригинальным тоже самое и нет вывода в лог

« Last Edit: September 04, 2014, 03:43:06 PM by N-Ban »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Странное поведение скрипта
« Reply #4 on: September 04, 2014, 06:03:43 PM »
А как он в него войдет если if ($err = 3) а до того нигде этой $err нет?

N-Ban

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Странное поведение скрипта
« Reply #5 on: September 04, 2014, 07:23:17 PM »
Есть вот такая конструкция на скрине видно или она здесь не работает?
$err= $err+1
И странно почему не выводит в логах?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Странное поведение скрипта
« Reply #6 on: September 04, 2014, 11:03:37 PM »
Есть вот такая конструкция на скрине видно или она здесь не работает?
$err= $err+1
И странно почему не выводит в логах?

Сундук заперт а ключ лежит в нутри...

N-Ban

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Странное поведение скрипта
« Reply #7 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

Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Re: Странное поведение скрипта
« Reply #8 on: September 05, 2014, 11:20:15 PM »
думаю проблема в этом:

KEYSTRING ("bzors")

и еще err = 3 никогда не будет

N-Ban

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Странное поведение скрипта
« Reply #9 on: September 05, 2014, 11:47:47 PM »
Я заметил ошибку по поводу $err и вынес за if ее
а в чем в кеустринге проблема?