Сниппеты эмуляции мыши: FullEmulationMouse

эти клики по шапке сайта , происходят не от того что используется кубик или снипет. это особенность верстки этого сайта. шапка закреплена и начинает перекрывать некоторые элементы.
тут просто так не получиться. тут либо надо находить элемент этой шапки и удалять из верстки, либо проверять куда крыса кликает и сравнивать с тем элементом на который хотим кликнуть. и если есть перекрытие то что то сделать, например проскролить выше страницу и идти на второй заход клика. тут нужны циклы , счетчики повторов, проверки элементов. наверно 1-й вариант проще все таки :-)
Как удалить из верстки?
 
Как удалить из верстки?
не надо ничего удялать.
сколько я понимаю, ты хочешь написать свой кликер выдачи яндекса.
Нихрена с таким подходом не выйдет.
этих кликеров в интернете уже полно и на сильно более профессиональном уровне. И у них реальные проблемы с эффективностью.

Потому делай все постепенно и сразу с учетом того, что с другой стороны не дураки сидят.

Если удаляешь элементы - ломается навигация по координатам. И если ты выдачу Яндексе глянешь - он четко трекает по каким элементам ты мышкой водишь. И если что-то удалишь, как миниум окажется что по какой-то причине по ним мышка не ездит. И еще миллион других зависимостей.

Надо писать универсальные коды! С учетом разноообразных ситуаций и версток!
Учи Xpath прям по серьезному!


Это нифига не быстро!
Потому делай постепенно, но сразу хорошо.
На коленке прям собрать побыстрому - нынче это только пшик сделать для яши.
Ну или тренировать на простых банальных сайтах, постепенно усложняя.
Зайди в конкурсные статьи. Если уже начинаешь понимать про что там пишется и уже можешь у себя реализовать - тогда хотя бы на основе этого начинай делать.
Там люди не зря глубоко копают. Не от того, что им нефиг заняться, а от того, что более простые варианты не канают!


У меня, например, уже хрен знает какой релиз основных ботов по порядку, не считая мелких улучшений. Старт с коленки - это фейл.
 
Ребята столкнулся с траблой , сервер винда 2016 , не работают сниппеты мыши , зенка версия 5,41
 
Есть решение плавного вертикального скрола сверху вниз с возможностью настраивать скорость для создания видео?
 
а при клике по элементу, куда именно будет клик?
у элемента есть же размеры (координаты)то клик будет в рандомные координаты или как??
1. Выше - это функция перемещения, а не клика
2. Клик будет в то место, где стоит курсор
3. Обычно перемещается ближе к верхнему левому углу (хотя и говорят что по всему элементу должно)
4. Никто не мешает самому потом "додвинуть" мышку куда надо и после этого кликнуть.
 
  • Спасибо
Реакции: ukrainec2014
друзья,привет. Скажите как уменьшить скорость ввода данных из переменных

сам код:
C#:
Развернуть Свернуть Копировать
var tab = instance.ActiveTab;

//Ищем поля логина и пароля, кнопку входа
var username = tab.FindElementByXPath("//input[@id='username']", 0);
var password = tab.FindElementByXPath("//input[@name='password']", 0);
var passwordc = tab.FindElementByXPath("//input[@id='passwordc']", 0);
string login = project.Variables["login"].Value;
string pass = project.Variables["pass"].Value;


//Изменяем настройки мыши (теперь двигается чутка быстрее)
tab.FullEmulationMouseSetOptions(5,5,10);
//Ведём её к полю ввода eлогина
tab.FullEmulationMouseMoveToHtmlElement(username);
//Кликаем по полю
tab.FullEmulationMouseClick("left", "click");
//Вводим логин
username.SetValue(project.Variables["login"].Value, "Middle");
//Микропауза (300-800 мс)
Thread.Sleep(Global.Classes.rnd.Next(3,8)*100);

//Возвращаем настройки мыши к стандартным
tab.FullEmulationMouseSetOptions();
//Ведём её к полю ввода пароля
tab.FullEmulationMouseMoveToHtmlElement(password);
//Кликаем по полю
tab.FullEmulationMouseClick("left", "click");
//Вводим пароль
password.SetValue(project.Variables["pass"].Value, "Middle");
//Микропауза (300-700 мс)
Thread.Sleep(Global.Classes.rnd.Next(3,8)*100);

//Изменяем настройки мыши (теперь двигается чутка быстрее)
tab.FullEmulationMouseSetOptions(5,5,10);
//Ведём её к полю ввода подтверждению пароля
tab.FullEmulationMouseMoveToHtmlElement(passwordc);
//Кликаем по полю
tab.FullEmulationMouseClick("left", "click");
//Вводим логин
passwordc.SetValue(project.Variables["pass"].Value, "Middle");
//Микропауза (300-700 мс)
Thread.Sleep(Global.Classes.rnd.Next(3,8)*100);
 
друзья,привет. Скажите как уменьшить скорость ввода данных из переменных

сам код:
C#:
Развернуть Свернуть Копировать
var tab = instance.ActiveTab;

//Ищем поля логина и пароля, кнопку входа
var username = tab.FindElementByXPath("//input[@id='username']", 0);
var password = tab.FindElementByXPath("//input[@name='password']", 0);
var passwordc = tab.FindElementByXPath("//input[@id='passwordc']", 0);
string login = project.Variables["login"].Value;
string pass = project.Variables["pass"].Value;


//Изменяем настройки мыши (теперь двигается чутка быстрее)
tab.FullEmulationMouseSetOptions(5,5,10);
//Ведём её к полю ввода eлогина
tab.FullEmulationMouseMoveToHtmlElement(username);
//Кликаем по полю
tab.FullEmulationMouseClick("left", "click");
//Вводим логин
username.SetValue(project.Variables["login"].Value, "Middle");
//Микропауза (300-800 мс)
Thread.Sleep(Global.Classes.rnd.Next(3,8)*100);

//Возвращаем настройки мыши к стандартным
tab.FullEmulationMouseSetOptions();
//Ведём её к полю ввода пароля
tab.FullEmulationMouseMoveToHtmlElement(password);
//Кликаем по полю
tab.FullEmulationMouseClick("left", "click");
//Вводим пароль
password.SetValue(project.Variables["pass"].Value, "Middle");
//Микропауза (300-700 мс)
Thread.Sleep(Global.Classes.rnd.Next(3,8)*100);

//Изменяем настройки мыши (теперь двигается чутка быстрее)
tab.FullEmulationMouseSetOptions(5,5,10);
//Ведём её к полю ввода подтверждению пароля
tab.FullEmulationMouseMoveToHtmlElement(passwordc);
//Кликаем по полю
tab.FullEmulationMouseClick("left", "click");
//Вводим логин
passwordc.SetValue(project.Variables["pass"].Value, "Middle");
//Микропауза (300-700 мс)
Thread.Sleep(Global.Classes.rnd.Next(3,8)*100);

Вместо Middle None
 
  • Спасибо
Реакции: SHILY и Семен12
а какие еще есть условия ввода текста? ну всмысле значения,как middle и none
Вручную как-то это можно редактировать? паузы там проставлять,либо стереть\дописать символ с задержкой
 
а какие еще есть условия ввода текста? ну всмысле значения,как middle и none
Вручную как-то это можно редактировать? паузы там проставлять,либо стереть\дописать символ с задержкой
"None", "Middle", "Full" или " Super Emulation"

Да есть тут сниппеты подобные... Пишет печатает, ошибочный символ. Потом его удаляет

Вот в этой ветке глянь
 
  • Спасибо
Реакции: Семен12
Добрый день. Есть задача осуществлять серию кликов по одному елементу. Скорость кликов в цикле очень медленная. Вроде 1-2 клика в секунду. Минимальный тип эмуляции: Middle. Ondoubleclick не работает. Эмуляция задержек на минимуме. Подскажите что делать? Надо прям отстучать ЛКП по элементу.
 
Добрый день. Есть задача осуществлять серию кликов по одному елементу. Скорость кликов в цикле очень медленная. Вроде 1-2 клика в секунду. Минимальный тип эмуляции: Middle. Ondoubleclick не работает. Эмуляция задержек на минимуме. Подскажите что делать? Надо прям отстучать ЛКП по элементу.
Можно же просто эвенты слать. Там скорость сильно выше можно сделать.
Полная эмуляция принципиальная?
 
Добрый день. Есть задача осуществлять серию кликов по одному елементу. Скорость кликов в цикле очень медленная. Вроде 1-2 клика в секунду. Минимальный тип эмуляции: Middle. Ondoubleclick не работает. Эмуляция задержек на минимуме. Подскажите что делать? Надо прям отстучать ЛКП по элементу.
Хочешь скорости, тогда тебе нужно сделать через параллель
C#:
Развернуть Свернуть Копировать
instance.EmulationLevel = "Full";
int MaxClick = 5;

System.Threading.Tasks.Parallel.For(0, MaxClick, p => {
    instance.ActiveTab.FullEmulationMouseClick("left", "click");}
 
  • Спасибо
Реакции: daymos и SHILY
Подскажите как правильно получить список элементов для чтения заголовков, а именно https://zennolab.com/discussion/thr...ii-myshi-fullemulationmouse.35369/post-271425
Везде данный код работает хорошо, но вот на yahoo не получается поводить мышкой по тайтлам и дескрипшенам

C#:
Развернуть Свернуть Копировать
Tab tab = instance.ActiveTab;

var rnd = new Random();


//Находим коллекцию элементов-постов
//var posts = tab.FindElementByXPath("//*[@id=\"yui_.*?\"]", 0);
var posts = tab.FindElementByAttribute("a", "id", "yui_.*?", "regexp", 0);


//Проходим в цикле по каждому посту
foreach (var post in posts.Elements)
{

    //Ищем заголовок поста
    var h2 = post.FindChildByXPath(".//h3", 0);
    int h2min = 30;        //Задаём минимальную длину заголовка для прочтения
    int ver = 33;        //Задаём вероятность прочтения заголовка меньше 'h2min' символов, в процентах
    int h2dlina = post.InnerText.Length;    //Определяем длину заголовка в символах
    int prsnt = rnd.Next(100);
    if ((h2dlina < h2min && prsnt >= ver) || h2dlina >= h2min)
    {
        //Заголовки
        tab.FullEmulationMouseMoveAboveHtmlElement(h2, 30);
    }
    //Делаем случайную паузу от 0,1 до 1 секунды
    Thread.Sleep(rnd.Next(1, 10) * 100);

    //Ищем текст поста
    var p = post.FindChildByXPath(".//p", 0);

    //Для доп рандомизации (или просто опытов), можно также после "прочтения" каждого поста менять настройки движения мышки (метод доступен с версии 5.10.4.1)
    //По умолчанию каждый параметр равен 5. Для их изменения также можно применять рандом:
    //tab.FullEmulationMouseSetOptions(rnd.Next(3,20), 5, rnd.Next(5,10));
    tab.FullEmulationMouseSetOptions(rnd.Next(3, 10), 5, rnd.Next(3, 10));

    //Проводим мышкой по тексту
    tab.FullEmulationMouseMoveAboveHtmlElement(p, rnd.Next(30, 50));
    //Делаем случайную паузу от 0,5 до 3 секунд
    Thread.Sleep(rnd.Next(4, 30) * 100);
}
 
Подскажите как правильно получить список элементов для чтения заголовков, а именно https://zennolab.com/discussion/thr...ii-myshi-fullemulationmouse.35369/post-271425
Везде данный код работает хорошо, но вот на yahoo не получается поводить мышкой по тайтлам и дескрипшенам

C#:
Развернуть Свернуть Копировать
Tab tab = instance.ActiveTab;

var rnd = new Random();


//Находим коллекцию элементов-постов
//var posts = tab.FindElementByXPath("//*[@id=\"yui_.*?\"]", 0);
var posts = tab.FindElementByAttribute("a", "id", "yui_.*?", "regexp", 0);


//Проходим в цикле по каждому посту
foreach (var post in posts.Elements)
{

    //Ищем заголовок поста
    var h2 = post.FindChildByXPath(".//h3", 0);
    int h2min = 30;        //Задаём минимальную длину заголовка для прочтения
    int ver = 33;        //Задаём вероятность прочтения заголовка меньше 'h2min' символов, в процентах
    int h2dlina = post.InnerText.Length;    //Определяем длину заголовка в символах
    int prsnt = rnd.Next(100);
    if ((h2dlina < h2min && prsnt >= ver) || h2dlina >= h2min)
    {
        //Заголовки
        tab.FullEmulationMouseMoveAboveHtmlElement(h2, 30);
    }
    //Делаем случайную паузу от 0,1 до 1 секунды
    Thread.Sleep(rnd.Next(1, 10) * 100);

    //Ищем текст поста
    var p = post.FindChildByXPath(".//p", 0);

    //Для доп рандомизации (или просто опытов), можно также после "прочтения" каждого поста менять настройки движения мышки (метод доступен с версии 5.10.4.1)
    //По умолчанию каждый параметр равен 5. Для их изменения также можно применять рандом:
    //tab.FullEmulationMouseSetOptions(rnd.Next(3,20), 5, rnd.Next(5,10));
    tab.FullEmulationMouseSetOptions(rnd.Next(3, 10), 5, rnd.Next(3, 10));

    //Проводим мышкой по тексту
    tab.FullEmulationMouseMoveAboveHtmlElement(p, rnd.Next(30, 50));
    //Делаем случайную паузу от 0,5 до 3 секунд
    Thread.Sleep(rnd.Next(4, 30) * 100);
}
просто надо поиск элемента улучшить. Посидеть, подумать, составить хороший xpath , который будет работать и после 10-й перезагрузки страницы.
Все упирается в поиск элемента. это база.
 
Может в следующей статье напишешь полноценный шаблон где можно имитировать действия человека на любом сайте в течении 5-10 минут? по сути система сайтом у всех одинаковые, Чтобы можно было углубиться в категории под категории пролистать все, левые движения мышкой и тп...
 
Point Point1 = instance.ActiveTab.FullEmulationMouseCurrentPosition; эта функция возвращает координаты где мышка остановилась в последний раз, даже если проскролить, она не принимает текущие координаты, а двигается с той части страницы, где была в последний раз. Мышка прошла, прокрутилась страница, Point Point1 = instance.ActiveTab.FullEmulationMouseCurrentPosition; и дальше движении мыши, но координаты принимаются сверху. Пауза не как не помогает, он берет те координаты. Походу костыль это единственный выход.
С этой хернёй боролся годик назад. Когда хотел Humaniator подружить с FullEmalation. FullEmulation работает с абсолютными координатами, а Humaniator с относительными
Я тоже пытался узнавать координаты мыши. но нужны не координаты мыши, а сдвиг окна. Добавляя текущий сдвиг к координате Y, то фактически будто работаете с относительной координатой в рамках текущей видимой части
Главное после каждого скролла получать сдвиг экрана

добавляйте к координате Y сдвиг экрана при каждом движении


int shift = Convert.ToInt32(instance.ActiveTab.FindElementByAttribute("body", "fulltagname", "body", "regexp", 0).GetAttribute("topInTab"));
shift = - shift;

Random rnd = new Random();
int x = rnd.Next(150, 500);
int y = rnd.Next(160, 601);
instance.ActiveTab.FullEmulationMouseMove(x, y + shift); // везде добавляйте shift и после скролла снова вычисляйте сдвиг

Неплохо бы в метод FullEmulationMove сделать атрибут координата относительно текущего экрана или сверху

И очень не хватает поиск элемента в видимой части экрана.

ScrollinToview вообще моментально перелетает.
И выставляет элемент по срезу экрана сверху, а там плавающая шапка, у яндекса например, с гигантским Z-index и элемент ложится под шапку

Сделайте нормально!!!!


FullEmulationScroll не скроллит на точное число пикселей, оказывается зависит от установки скорости скролла в Windows. Также всякие доп драйвера управляющие мышью в windows не дают скроллить при движении мыши. Мышь упирается в конец экрана и никуда не скроллит

Только движение мышки по координатам нормально скроллит

ЕЩЕ РАЗ ВЫРАЖУ ВОЗМУЩЕНИЕ. КОГДА БАЗОВЫЕ ФУНКЦИИ ДОДЕЛАЕТЕ О КОТОРЫХ УЖЕ НЕСКОЛЬКО ЛЕТ ПРОСИМ.???
ДЕРЬМО ВСЕ НОВЫЕ ФУНКЦИИ ЕСЛИ ИСКАТЬ ЭЛЕМЕНТЫ ЧЕРЕЗ ЗАДНИЦУ НАДО И НИКАКОГО FullEmulation НЕТ ПО ФАКТУ

ПРОСТОЕ - КОГДА СДЕЛАЕТЕ СЧЕТЧИК СОВПАДЕНИЙ В ПОИСКЕ ПО XPATH???? 5 МИНУТ РАБОТЫ ВСТАВИТЬ А ЛЮДИ ТЕСТЕРЫ XpATH ЧЕРЕЗ КОСТЫЛИ ТЕСТИРУЮТ
 
Последнее редактирование:
годы летят, а prodox все так же возмущается :bk:
вместо того что бы молча уйти на софт конкурента, где все отлично работает без костылей.... как там говорят... мыши если кактус, кололись, плакали, но продолжают его жрать *HAHA*
 
Довольно интересно как это работает. написание метода идентично, а в зависимости от параметров работает по разному. Если передаешь Элемент. то это прокрутка к элементу. Если числа, то на дельту
 

Вложения

  • Скриншот 05-03-2023 073253.jpg
    Скриншот 05-03-2023 073253.jpg
    205,9 KB · Просмотры: 45
Довольно интересно как это работает. написание метода идентично, а в зависимости от параметров работает по разному. Если передаешь Элемент. то это прокрутка к элементу. Если числа, то на дельту
 
C#:
Развернуть Свернуть Копировать
//находим элемент по xpath
var he = instance.ActiveTab.FindElementByAttribute("span", "innertext", "Document", "regexp", 0);
//подводим мышь к элементу
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);
//кликаем по нему
instance.ActiveTab.FullEmulationMouseClick("left","click");
подскажите, клик работает не всегда
и при изминени размера страницы ошибка, вообще не находит элемент
подскажите как исправить
 
C#:
Развернуть Свернуть Копировать
//находим элемент по xpath
var he = instance.ActiveTab.FindElementByAttribute("span", "innertext", "Document", "regexp", 0);
//подводим мышь к элементу
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);
//кликаем по нему
instance.ActiveTab.FullEmulationMouseClick("left","click");
подскажите, клик работает не всегда
и при изминени размера страницы ошибка, вообще не находит элемент
подскажите как исправить
Лучше сделать так
C#:
Развернуть Свернуть Копировать
//находим элемент по xpath
var tab = instance.ActiveTab;
var he = tab.FindElementByXPath("xPath", 0);//xPath
//подводим мышь к элементу
tab.FullEmulationMouseMoveToHtmlElement(he);
//кликаем по нему
tab.FullEmulationMouseClick("left", "click");

После того как вы получили Tab, нельзя менять размер страницы, потому что элементы изменят свои координаты!
 
  • Спасибо
Реакции: olek2765
Друзья, всем привет.
Подскажите пожалуйста, можно ли как то ускорить прокрутку в следующем коде:
C#:
Развернуть Свернуть Копировать
int i = 0; //Точка отсчета
int Y = 100; //Координата по оси Y

//Иницируем начало цикла со скроллингом
while(true)
{
    //Прокрутка
    instance.ActiveTab.FullEmulationMouseWheel(0,Y);

    //Положение мыши по оси Y
    int posY = instance.ActiveTab.FullEmulationMouseCurrentPosition.Y;

   //Условие, если положение мыши по оси Y больше точки отсчета, то скроллим дальше
    if(posY > i)
    {
        i = posY;
        Y += 100;
    }
    else //иначе выходит из цикла
    {
        break;
    }
}

Уж слишком долго он листает вниз. Как то ускорить можно, подскажите параметром настройки, думаю он есть, но пока не могу разобраться в коде.
Спасибо!
 
Y +=200;
 
Спасибо, но это лишь приводит к тому, что прокручивается на большее кол-во строк. Но сама скорость прокрутки - очень медленная.
Посмотрите данные методы
.FullEmulationMouseSetScrollBorder()
.FullEmulationMouseSetOptions()
 
код на 1 странице актуален? не палевный?
 
Хоть убейте, не пойму: неужто сложно сделать кубик прокрутки колесика мышки??? Разрабы!
 
  • Спасибо
Реакции: nvrskozzy

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