2 место Ошибки в шабах?! Находим и решаем их в 2 раза быстрее!!!

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113
Грамотно заданный вопрос, это половина ответа.
А в зп грамотно выстроенные логи ошибок, это половина решения.


На этом несложном примере, который вы с легкостью сможете использовать, в своих шаблонах, я это продемонстрирую.
Вы не пожалеете, если разберетесь!

Для начала нужно усвоить, что каждый шаг в шаблоне имеет уникальный айди, по которому его можно идентифицировать и найти в ProjectMaker'e.

Для того чтобы получить id шага с ошибкой, необходимо в логах ZennoPoster, кликнуть по ошибке правой клавишей мыши и нажать «скопировать id».


Далее в в ProjectMaker'e нажать на поиск, вставить айди и найти элимент и уже разбираться почему все это так.


Но пока не скопируешь id и не найдешь его в ProjectMaker'e, непонятно где произошла ошибка, также непонятно сколько всего таких ошибок, а сколько других. Заниматься удручительным копипастом из логов, это решение для извращенцев. Надеюсь ты не такой, мой читатель. Задачи нужно решать элегантно и просто)

Я предлагаю Вам следующее решение:


Как видно на скрине используется большой красный круг badEnd.
Но к нему не ведет ни одной стрелки. т. к. шаблон сам автоматом перебрасывает выполнение на badEnd, если во время выполнения произошла ошибка.

Чтобы выловить ошибку и чтобы она была наглядно отображена я делаю следующее:
1. Получаю tickCount, это уникальное цифровое значение. Это для того, чтобы были объедены элементы и логи которые мы получим ниже, для каждого потока, но и уникальны, чтобы названия файлов не совпадали с названиями которые сохранят другие потоки.
2. Получаем ID ошибки внутри шаблона

Многое и все основы доступны в ЗП без знаний языков программирования, но в некоторых ситуациях без них не обойтись. Просто используйте этот код для получения ID шага в котором ошибка.
3. С помощью CaptchaSaver мы сделаем скрин инстанса. Действует, как модуль распознавания каптчи, только мы указывает тег который хотим заскринить, в нашем случае вся видимая часть, это тег BODY (Кто не знает почему BODY, изучите основы html. В теге BODY, вся видимая часть страницы находится)

И во вкладке "дополнительно" Указываем путь и название полученного скрина для сохранения скрина. В нашем случае это:
{-Project.Directory-}error\{-Variable.Log_Error-}—{-Variable.tickID-}.jpg
директория проекта\error\полученный айди в шаге2—уникальный тик айди.jpg


4. Сохраняем исходный код страницы.
5. Сохраняем DOM страницы.
6. Этот C# код получает название и значение всех переменных, используемых в шаблоне.
7. Сохраняем все эти переменные в файл.


В итоге ваши логи будут выглядеть так:

ga-2225 это пример id ошибки, у Вас их может быть много и разных, но благодаря tickCount различные файлы одной ошибки, будут сгруппированы!

А благодаря скрину вы Визуально увидите ошибку, а благодаря исходному коду и DOM'у страницы, Вы будете знать в каком состоянии находился код страницы в момент ошибки.

Править ошибки будет легко и просто!!

Для использования шаба, просто скопируйте этот столбец с шагами в свой проект и соедините с BadEnd.
И вы поймете насколько наглядны и понятны стали ошибки!
 
Тема статьи
Другое
Номер конкурса статей
Третий конкурс статей

Вложения

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Последнее редактирование:

daymos

Client
Регистрация
11.11.2009
Сообщения
805
Благодарностей
239
Баллы
43
Я на 4-ке тоже скринил проблемные шаблоны, но очень часто в результате сохранялась черная картинка.
Очень хороший способ для универсальных шаблонов, например, постер в какой-то движок разных модификаций, где быстрее найти ошибку просто взглянуть на проблемные скриншоты.
ТС, спасибо за интерсные не стандартные статьи!

Кстати, за "человеческие логи" я просил еще с первых 4-ок, так как в тройке можно было давать кастомные айди шагов и эти же названия светились в логах.
http://zennolab.com/discussion/threads/log-oshibok-i-chto-dalshe.5338/#post-50950
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113

Master Woo

Client
Регистрация
06.12.2014
Сообщения
122
Благодарностей
129
Баллы
43
однозначно плюс, можно получить исходник чтобы не переписывать с картинок?
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113
Несколько раз перечитал!!! Но то, что забыл прикрепить шаб так и не заметил. 5 мин. Сейчас организую.
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
378
Баллы
63
Шикарно. Очень интересное решения.
LightWood не воспринимай как критику, просто прочел статью, и пришла мисль, сохранять лог не в нескольких файлах, а одним html файлом, где и скриншоти, и логи, и значения переменных выставление в удобном формате, чтоб легко осмыслить их.
Єто не критика, а больше заметка для себя чтоб когда буду делать такую штуку не забить идею, и применить ее у себя. просто добавить в свои шаблони режим трасироки ошибок. В входящих настройках зделать чекбокс
 

execut0r

Client
Регистрация
12.03.2014
Сообщения
259
Благодарностей
270
Баллы
63
Спасибо! Обязательно воспользуюсь. Давно о таком думал, а тут все так красиво и показательно.
ЗЫ svaminar толково подсказал. Спасиб и тебе.
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113
Я придерживаюсь стратегии: Разделяй и властвуй.
Можно сделать как угодно. Я подаю идеи, а вы делитесь своими мыслями и виденьем!)
Мне удобней именно такой вид: раздельно, но сгрупированно!

Голосование за лучшую статью открыто: http://zennolab.com/discussion/threads/golosovanie.19934/
Мои две статьи:
Кто зарабатывает 16000$ в день на продаже аккаунтов?! Получаем статистику продаж интернет магазинов!
и
Ошибки в шабах?! Находим и решаем их в 2 раза быстрее!!!


Поддержите понравившиеся Вам статьи.http://zennolab.com/discussion/threads/oshibki-v-shabax-naxodim-i-reshaem-ix-v-2-raza-bystree.19930/
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 510
Благодарностей
990
Баллы
113
Все хорошо, только в числе двадцать вы ноль забыли указать :-)
Правильный заголовок был бы
Ошибки в шабах?! Находим и решаем их в 20 раза быстрее!!!
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
785
Баллы
113
хорошоая статья, из разряда мастхев.
LightWood, как считаешь, можно ли улучшить обработчик по таким параметрам?
Я предлагаю рассмотреть такие пункты.
1.Получать скриншот не только первого документа, н и всех остальных, т. е. в капчасейвере поставить -1 или использовать в шарпе instance.ActiveTab.GetPagePreview().
2.Получать дом не стандартным методом а через return string .Join("\r\n", instance.ActiveTab.AllDocuments.Documents.Select(doc=>doc.Body.OuterHtml)); Как показала практика в стандартном методе отображется далеко не все

Сделать это все в одном маленьком красном кубике было бы вобще чудесно-причудесно!
Еще раз спасибо за статью!
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113
Хорошее решение, нужно будет тоже добавить себе такого рода логирование.

Единственный момент - сейчас уже добавили скриншот браузера, как стандартное действие. Можно без каптчасейверов, с ним помнится были когда то проблемы.
 

sipoku

Client
Регистрация
04.04.2010
Сообщения
266
Благодарностей
138
Баллы
43
Подскажите, а что в версии 4.3.5.0 может отличаться от новой, что этот шаблон у меня не работает? Добавил это логирование в свой шаблон и при старте работы шаблона выдает ошибки С# кода.
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113

sipoku

Client
Регистрация
04.04.2010
Сообщения
266
Благодарностей
138
Баллы
43
Жаль. Я хоть и конкурент вроде как, но я бы и сотню голосов за эту вашу статью и идею отдал.
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113
Процитируйте тут код и ошибку, может подскажет кто-то, как заставить работать на вашей древней версии.
 

sipoku

Client
Регистрация
04.04.2010
Сообщения
266
Благодарностей
138
Баллы
43
Код:
Ошибка в действии "CS0246" "Не удалось найти имя типа или пространства имен 'LastError' (возможно, пропущена используемая директива или ссылка на сборку)" в строке "LastError error = project.GetLastError();"
Отладка проекта завершилась с ошибкой
Ошибка в действии "CS1061" ""ZennoLab.InterfacesLibrary.ProjectModel.Collections.ILocalVariables" не содержит определение для "Keys". Не удалось найти метод  расширения "Keys", принимающий первый аргумент типа "ZennoLab.InterfacesLibrary.ProjectModel.Collections.ILocalVariables"  (пропущено использование директивы или ссылка на сборку?)" в строке "var sb = new StringBuilder();foreach(var variable in project.Variables.Keys){    sb.AppendFormat("Name: {0} Value: {1}\r\n", variable, project.Variables[variable].Value);}return sb.ToString();"
Ошибка в действии "CS1061" ""ZennoLab.InterfacesLibrary.ProjectModel.IZennoPosterProjectModel" не содержит определение для "GetLastError". Не удалось найти метод  расширения "GetLastError", принимающий первый аргумент типа "ZennoLab.InterfacesLibrary.ProjectModel.IZennoPosterProjectModel"  (пропущено использование директивы или ссылка на сборку?)" в строке "LastError error = project.GetLastError();"
Это все, что в логе. Ошибку выдает сразу же после старта.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 703
Баллы
113
Обновляйте программу :-)
 

sipoku

Client
Регистрация
04.04.2010
Сообщения
266
Благодарностей
138
Баллы
43

Process

Client
Регистрация
07.04.2015
Сообщения
32
Благодарностей
5
Баллы
8
Разработчики Zenno могли бы встроить аналогичное решение по умолчанию.
Например, в качестве опции.
 
  • Спасибо
Реакции: sipoku и Oleg1987

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113
Разработчики Zenno могли бы встроить аналогичное решение по умолчанию.
Например, в качестве опции.
А еще они могли бы полностью писать за нас все шаблоны. Ну так, как опция. :-)
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113
хорошоая статья, из разряда мастхев.
LightWood, как считаешь, можно ли улучшить обработчик по таким параметрам?
Я предлагаю рассмотреть такие пункты.
1.Получать скриншот не только первого документа, н и всех остальных, т. е. в капчасейвере поставить -1 или использовать в шарпе instance.ActiveTab.GetPagePreview().
2.Получать дом не стандартным методом а через return string .Join("\r\n", instance.ActiveTab.AllDocuments.Documents.Select(doc=>doc.Body.OuterHtml)); Как показала практика в стандартном методе отображется далеко не все

Сделать это все в одном маленьком красном кубике было бы вобще чудесно-причудесно!
Еще раз спасибо за статью!
1. Да можно вполне думаю
2. Мне стандартного вроде хватало всегда. Но можно и через C#.

Вцелом я старался C# избегать. Применял только в тех моментах, когда нет аналогов в стандартных средствах ZP.
Народ по большей части не понимает С# и поэтому его избегает.
Хотел показать, что на кубиках можно сделать весьма интересные и функциональные вещи.

Многие посмотрели видео уроки как регать е-мэйлы на автомате, как использовать стандартный консруктор регулярных выражений, а основные принципы самого html и работы с элементами продолжают не понимать.
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113
Последнее редактирование:
  • Спасибо
Реакции: Nike59

Dailes

Client
Регистрация
27.05.2013
Сообщения
193
Благодарностей
76
Баллы
28
2я статья не лавки тем, что "считать чужие деньги" дурное занятие.
А за первую спасибо. Сегодня пригодилось, выручил.
Добра тебе \о/
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113
2я статья не лавки тем, что "считать чужие деньги" дурное занятие.
А за первую спасибо. Сегодня пригодилось, выручил.
Добра тебе \о/
Да пожалуйста) И тебе добра))

Очень грамотное и верное решение уметь собирать данные и приводить их в какую-то статистику. Ибо не нужно будет никому писать "Как заработать", если можно путем сбора данных самому вычислять источники заработка.
Считаю, что та статья реально показывает настандартный подход простой реализацией.
Считать $$$ для оценки рынка очень даже хорошо)
 
Последнее редактирование:

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
196
Баллы
43
Ребята никто не делал более продвинутую версию ? поделитесь.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
785
Баллы
113
C#:
//случай для сбора инфы об ошибке в с# кубике
try{
  
    //попытка прочитать несуществующий файл
    File.ReadAllBytes("asdfasdf");
  
}catch(Exception e){
    //сохраняем стек ошибки в зп переменню
    project.Variables["status"].Value = e.ToString();
    throw e;
}
 
Регистрация
03.12.2012
Сообщения
187
Благодарностей
89
Баллы
28
Статья супер, все с умом. Я еще код страницы где баг вылетел, сохраняю в файл .html, что бы в хроме глянуть, ну вы поняли.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)