Преобразовать кубик в свой код

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
Не работает при воспроизведении, хотя и собрано в режиме записи. Ошибки не выдает, но игнорирует загрузку картинки. Я подумал, может его можно как-то заставить.. и вот я тут. Помогите, пожалуйста.
Безымянный.jpg
 

Hazar

Client
Регистрация
05.12.2018
Сообщения
107
Благодарностей
19
Баллы
18
Не работает при воспроизведении, хотя и собрано в режиме записи. Ошибки не выдает, но игнорирует загрузку картинки. Я подумал, может его можно как-то заставить.. и вот я тут. Помогите, пожалуйста.Посмотреть вложение 39449
Иногда следует пользоваться не режимом воспроизведения, а конструктором действий.
Кубик преобразовать в код очень просто, по кубику тыкаете правой кнопкой мыши, и там будет действие, преобразовать в код.
 

Hazar

Client
Регистрация
05.12.2018
Сообщения
107
Благодарностей
19
Баллы
18
Иногда следует пользоваться не режимом воспроизведения, а конструктором действий.
Кубик преобразовать в код очень просто, по кубику тыкаете правой кнопкой мыши, и там будет действие, преобразовать в код.
А вот кто мне ответит, как преобразовать уже имеющийся код в кубик, без знания С# ?
Вроде нет такой функции в Зенке, преобразовать код в кубик?
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
А вот кто мне ответит, как преобразовать уже имеющийся код в кубик, без знания С# ?
Вроде нет такой функции в Зенке, преобразовать код в кубик?
Интересно зачем?
 
  • Спасибо
Реакции: Hazar

Hazar

Client
Регистрация
05.12.2018
Сообщения
107
Благодарностей
19
Баллы
18
Иногда следует пользоваться не режимом воспроизведения, а конструктором действий.
Кубик преобразовать в код очень просто, по кубику тыкаете правой кнопкой мыши, и там будет действие, преобразовать в код.
Интересно зачем?
У меня есть пелена кода, гулялка. И чтоб вставить в середину в неё другой закрытый шаблон, необходимо чтоб, она была на кубиках. На кубиках, так-же, легче отлавливать ошибки.
Код:
//Адрес стартовой страницы
string url = "https://ru.wordpress.org/";
//Количество страниц для чтения
int pageCount = 3;
//XPath элементов для эмуляции чтения
string xpath = "//h1[string-length(text())>10]|//h2[string-length(text())>10]|//h3[string-length(text())>10]|//h4[string-length(text())>10]|//p[string-length(text())>10]";
//Переменная для определения вероятности
int chance = 0;
//Шанс пропуска блоков, в %
int chanceSkip = 70;
//Переменная для определения перехода в абзаце
bool isLinkClicked = false;
var rnd = Global.Classes.rnd;
var tab = instance.ActiveTab;
//Переходим на заданную страницу
tab.Navigate(url);
if (tab.IsBusy)    tab.WaitDownloading();
Thread.Sleep(1700);
//Цикл чтения страниц (1 итерация - 1 страница)
for (int p=0; p<pageCount; p++)
{
    //Ищем элементы странички для эмуляции чтения
    var colTexts = tab.FindElementsByXPath(xpath);
    //Вычленяем только видимые на странице элементы
    var colResult = tab.FindElementsByXPath("//sngvuyrbuy");
    if (colTexts.Count>0)
    {
        foreach (var el in colTexts.Elements)
        {
            int topInBrowser = int.Parse(el.GetAttribute("topInBrowser"));
            int leftInBrowser = int.Parse(el.GetAttribute("leftInBrowser"));
            //Если элемент видимый
            if (el.Height>0 && el.Width>0 && topInBrowser>=0 && leftInBrowser>=0)
            {
                colResult.Add(el);
            }
        }
    }
    colTexts = colResult;
    //Если коллекция пуста, выводи соответствующее сообщение в лог
    if (colTexts.Count<1)
    {
        project.SendWarningToLog("Подходящие тексты для чтения не найдены! Страница: '"+tab.URL+"'", true);
    }
    int num = 1;
    //В цикле проходим элементы коллекции
    foreach (var elText in colTexts.Elements)
    {
        // Определяем, пропускать ли данный блок
        chance = rnd.Next(1, 101);
        //На основе выпавшего значения решаем, пропускать ли блок
        if (chance <= chanceSkip)
        {
            //С вероятностью chanceSkip пропускаем
            project.SendInfoToLog("Пропускаем чтение элемента №" + num + ", тег: "+elText.TagName);
            num++;
            Thread.Sleep(rnd.Next(3,9)*100);
            continue;
        }
        // Пропускаем слишком короткие блоки с определенной вероятностью
        if (elText.InnerText.Length < 100)
        {
            //Если длина текста блока меньше 100 символов
            chance = rnd.Next(1, 101);    //Случайно берём значение от 1 до 100
            if (chance <= chanceSkip)
            {
                //С вероятностью chanceSkip не читаем его
                project.SendInfoToLog("Пропускаем чтение элемента №" + num + " из-за малой длины его текста, тег: "+elText.TagName);
                num++;
                continue;
            }
        }
        //Записываем в лог номер текущего элемента и название его тега
        project.SendInfoToLog("Читаем элемент №" + num + ", тег: "+elText.TagName);
        //Эмулируем чтение элемента
        tab.FullEmulationMouseMoveAboveHtmlElement(elText, 30);
        //С определенной вероятностью переходим по случайной ссылке в абзаце
        var colLinks = elText.FindChildrenByXPath(".//a");
        //Если в коллекции есть элементы (ссылки)
        if (colLinks.Count > 0)
        {
            chance = rnd.Next(1, 101);
            if (chance <= 3)
            {
                //С вероятностью 3% переходим по случайной ссылке из абзаца
                var elLink = colLinks.Elements[rnd.Next(colLinks.Count)];
                tab.FullEmulationMouseMoveToHtmlElement(elLink);
                Thread.Sleep(rnd.Next(4,8)*100);
                tab.FullEmulationMouseClick("left", "click");
                if (tab.IsBusy)    tab.WaitDownloading();
                Thread.Sleep(rnd.Next(5,25)*100);
                //Сообщаем коду ниже что перешли по ссылке
                isLinkClicked = true;
                //Выходим из цикла, переходим к следующей страничке
                break;
            }
        }
        //Случайная пауза между чтением блоков
        chance = rnd.Next(0, 2);
        if (chance==0)
        {
            Thread.Sleep(rnd.Next(5,50)*100);
        }
        num++;
    }
    //Если при чтении не переходили на другую страницу
    if (isLinkClicked == false)
    {
        //Находим все элементы, содержащие ссылки
        var colLinks = tab.FindElementsByXPath("//a");
        //Вычленяем только видимые на странице ссылки
        colResult = tab.FindElementsByXPath("//sngvuyrbuy");
        if (colLinks.Count>0)
        {
            foreach (var el in colLinks.Elements)
            {
                int topInBrowser = int.Parse(el.GetAttribute("topInBrowser"));
                int leftInBrowser = int.Parse(el.GetAttribute("leftInBrowser"));
                if (el.Height>0 && el.Width>0 && topInBrowser>=0 && leftInBrowser>=0)
                {
                    colResult.Add(el);
                }
            }
        }
        colLinks = colResult;
        //Проверка наличия ссылок
        if (colLinks.Count<1)
        {
            project.SendWarningToLog("Видимых ссылок на странице не найдено! "+tab.URL, true);
            project.SendInfoToLog("Завершили гуляние по страницам. Количество прочитанных страниц: "+(p+1), true);
            return "ok";
        }
        //Ведём мышку к случайному элементу со ссылкой
        var elLink = colLinks.Elements[rnd.Next(colLinks.Elements.Length)];
        tab.FullEmulationMouseMoveToHtmlElement(elLink);
        Thread.Sleep(rnd.Next(4,8)*100);
        tab.FullEmulationMouseClick("left", "click");
        if (tab.IsBusy)    tab.WaitDownloading();
        Thread.Sleep(rnd.Next(5,25)*100);
    }
    project.SendInfoToLog("Завершили чтение "+ (p+1) +"-й страницы.", true);
}
project.SendInfoToLog("Завершили гуляние по страницам.", true);
 
  • Спасибо
Реакции: kompas777

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
А вы сами переводили ее на С#?
 
  • Спасибо
Реакции: Hazar

Demiz

Client
Регистрация
19.12.2017
Сообщения
187
Благодарностей
121
Баллы
43
Не работает при воспроизведении, хотя и собрано в режиме записи. Ошибки не выдает, но игнорирует загрузку картинки. Я подумал, может его можно как-то заставить.. и вот я тут. Помогите, пожалуйста.Посмотреть вложение 39449
Попробуй в экшене "файл для загрузки" убрать в пути "_". У меня тоже не работала загрузка картинки, думал уже баг, оказывается у меня была запятая в пути к картинке
 
  • Спасибо
Реакции: Alexmd

Hazar

Client
Регистрация
05.12.2018
Сообщения
107
Благодарностей
19
Баллы
18
  • Спасибо
Реакции: Mikhail B.

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
Demiz, спасибо, но не помогло.
Hazar, спасибо, но не нашел.
Также есть вопрос более важный, чтобы не создавать новую тему спрошу тут:

Периодически лагает запись в файл. Аккаунты регаются, подтверждаются, редактируются разными шаблонами, батниками все по кругу, но физического сохранения в файл так и не происходит. В итоге в лог вывожу готовые акки и почты и копирую в нужные файлы. капец, автоматизация! Что я упускаю?
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
Demiz, спасибо, но не помогло.
Hazar, спасибо, но не нашел.
Также есть вопрос более важный, чтобы не создавать новую тему спрошу тут:

Периодически лагает запись в файл. Аккаунты регаются, подтверждаются, редактируются разными шаблонами, батниками все по кругу, но физического сохранения в файл так и не происходит. В итоге в лог вывожу готовые акки и почты и копирую в нужные файлы. капец, автоматизация! Что я упускаю?
Создайте список. Привяжите его. И записывайте екшеном. Операции над списком, добавить строку.
 

gevolushn

Известная личность
Регистрация
25.03.2019
Сообщения
518
Благодарностей
269
Баллы
63
Периодически лагает запись в файл. Аккаунты регаются, подтверждаются, редактируются разными шаблонами, батниками все по кругу, но физического сохранения в файл так и не происходит. В итоге в лог вывожу готовые акки и почты и копирую в нужные файлы. капец, автоматизация! Что я упускаю?
Проверьте эту галку.
5.png
 

Hazar

Client
Регистрация
05.12.2018
Сообщения
107
Благодарностей
19
Баллы
18

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
Зеннопостер свежий. Последнее обновление пришло вчера-позавчера, но не стал его устанавливать, потому что комбайн из 5 шабов пилю уже 3 дня и переделывать не хочется. Дожму ресурс и обновлюсь.
Конечно же я использую экшен. Если запускаю шаблон руками, то первый раз все записывает как надо, но по запуску из батника или по расписанию, счетчик мотает, но записывать отказывается. Вывожу себе в логах нужные данные и копирую руками.
Галка стоит.
Всем спасибо.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113

Hazar

Client
Регистрация
05.12.2018
Сообщения
107
Благодарностей
19
Баллы
18
Заголовок этой темы гласит, как преобразовать экшен в свой код. Это-то вам зачем?

Ещё могу посоветовать не записывать экшены в режиме записи, а попробовать воспользоваться конструктором действий, так-как разные значения в атрибутах экшена (кубика) получаются и соответственно это работает по другому зачастую.
 
Последнее редактирование:
  • Спасибо
Реакции: Alexmd

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
Нашел, как преобразовывать в код. Если бы я и в коде шарил побольше... но гугл всегда поможет.

Возвращаемся к вопросу о бат-файлах. Обновил зенку, перелопатил комбайн и теперь батники просто не запускаются из шаблонов. двойной клик по бату запускает нужный шаб, а вызов экшеном срабатывает только в ПМ.
 
Регистрация
26.05.2020
Сообщения
495
Благодарностей
172
Баллы
43

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
Не подскажешь, как? Раньше вроде видел такую фичу, а сейчас нет (((
Иногда поскроллить и почитать эффективнее, чем спрашивать чуть ниже ответа на свой вопрос..
Иногда следует пользоваться не режимом воспроизведения, а конструктором действий.
Кубик преобразовать в код очень просто, по кубику тыкаете правой кнопкой мыши, и там будет действие, преобразовать в код.
Эхх, каким же я нубасом был 2 года назад))
 
Регистрация
26.05.2020
Сообщения
495
Благодарностей
172
Баллы
43
Иногда поскроллить и почитать эффективнее, чем спрашивать чуть ниже ответа на свой вопрос..
да говорю ж, знал об этом, встречал ранее в интерфейсе. Сегодня по своему шабну пробежался, кое как нашел кубик, который такую возможность предоставляет. И кубик этот - генератор рандомного числа. Круто, че!..
 

socsecret.ru

Client
Регистрация
30.09.2017
Сообщения
346
Благодарностей
209
Баллы
43
Насколько я понял, преобразовать в C# можно далеко не каждый кубик? Например, экшены при работе с таблицами или списками, не преобразовываются.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Насколько я понял, преобразовать в C# можно далеко не каждый кубик? Например, экшены при работе с таблицами или списками, не преобразовываются.
а половина тех что можно преобразовать, не будут работать нормально :bk:
 

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