Как сделать рандомную прокрутку страницы

marsel80

Client
Регистрация
09.04.2015
Сообщения
304
Благодарностей
27
Баллы
28
Подскажите плиз, хотел сделать у себя в шабе рандомную прокрутку.

Пример: шаблон зашел на страницу, сделал то, что должен был сделать на странице, далее дабы разнообразить и с эмулировать разное поведение в каждый проход шаблона, хотелось бы, что бы шаб гулял по страницы, точнее прокручивал например вниз\наверх и так далее.

Знаю что через экшен эмуляция клавы можно вписать код типо {PGDN}(можно и несколько раз в одну строку), тогда глуюина прокрутки будет ровно столько, сколько раз я указал я данный код в этом экшене. Аналогично и на прокрутку вверх.

Проблема в том, что это будут статичные действия

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

Заранее спасибо!
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
Я бы такой момент реализовал через генерацию рандомного числа в рамках от и до (задавая через Входные настройки, к примеру). Результат генерации - конкретное число - использовал как число повторений нужной операции.
 
  • Спасибо
Реакции: marsel80

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
381
Баллы
63
Можно примерно так сделать, но это не прокрутка, а следование экрана за курсором
Код:
Random num = new Random();
int x = num.Next(200,500); //горизонталь
int y = num.Next(100,1000); //вертикаль
instance.ActiveTab.FullEmulationMouseMove(x,y);
Работает примерно так
https://i.imgur.com/xSIxCQa.gifv

Ап.
Чуть чуть дополнил, происходит рандомное количество повторений из переменных проекта "ot" и "do"
Код:
Random rnd = new Random();
int p = rnd.Next((Convert.ToInt32(project.Variables["ot"].Value)),(Convert.ToInt32(project.Variables["do"].Value)));
Random num = new Random();
for(int i=0;i<p;i++)
{
int x = num.Next(200,500);
int y = num.Next(100,2000);
instance.ActiveTab.FullEmulationMouseMove(x,y);
}
С рандомной паузой после каждого повторения
Код:
Random rnd = new Random();
int p = rnd.Next((Convert.ToInt32(project.Variables["ot"].Value)),(Convert.ToInt32(project.Variables["do"].Value)));
Random num = new Random();
var rand = new Random();
for(int i=0;i<p;i++)
{
int x = num.Next(200,500); //горизонтальное положение мыши
int y = num.Next(100,2000); //вертикальное положение мыши
instance.ActiveTab.FullEmulationMouseMove(x,y); //ведем курсор к координатам горизонталь*вертикаль
System.Threading.Thread.Sleep(rand.Next(500, 2000)); // пауза от 0,5 секунды до 2-х секунд.
}
Выглядит это все дело, следующим образом
https://i.imgur.com/SkKxfTr.gifv
 
Последнее редактирование:

marsel80

Client
Регистрация
09.04.2015
Сообщения
304
Благодарностей
27
Баллы
28
Можно примерно так сделать, но это не прокрутка, а следование экрана за курсором
Я сейчас в браузере на компе попробовал, он же так не делает, как это делается в коде. Я так понимаю это когда стерлку мышкой ведешь вверх или вниз ?
Не сильно ли палевно, если я не в зеннопостере так не могу делать то?
 

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
381
Баллы
63
Я сейчас в браузере на компе попробовал, он же так не делает, как это делается в коде. Я так понимаю это когда стерлку мышкой ведешь вверх или вниз ?
Не сильно ли палевно, если я не в зеннопостере так не могу делать то?
Не знаю как насчет палевности, но инста подобный метод проглатывает
 
  • Спасибо
Реакции: marsel80

marsel80

Client
Регистрация
09.04.2015
Сообщения
304
Благодарностей
27
Баллы
28

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
381
Баллы
63
Вроде норм подошло, спасибо вам большое за помощь и подробный код)))
Без проблем, мне самому интересно было сделать решение для случайного поведения мышки
 

corptoday

Client
Регистрация
16.10.2016
Сообщения
90
Благодарностей
7
Баллы
8
подскажите как из этого кода сделать наведение мышки на ссылку и дальнейшим кликом?
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
подскажите как из этого кода сделать наведение мышки на ссылку и дальнейшим кликом?
Можете перейти по ссылке в моей подписи в регистратор Facebook и посмотреть шаблон. Там есть примеры кода для эмуляции движения и клика мышью.
 

corptoday

Client
Регистрация
16.10.2016
Сообщения
90
Благодарностей
7
Баллы
8
спасибо, я понял что можно кликать так
instance.ActiveTab.FullEmulationMouseClick("left", "click");

но пока не понял как навести мышку на нужную ссылку и кликнуть
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
спасибо, но у вас там очень сложно и всё в одном кубике, мне бы проще на примере текущего кода.

я понял что можно кликать так
instance.ActiveTab.FullEmulationMouseClick("left", "click");

но пока не понял как навести мышку на нужную ссылку и кликнуть
текущий код только перемещает курсор и ничего не делает. После этого добавляете код перемещения до нужной ссылки (элемента) и совершаете клик. Был бы пример страницы, где нужно сделать клик - было бы проще код написать под нужное действие.
 

corptoday

Client
Регистрация
16.10.2016
Сообщения
90
Благодарностей
7
Баллы
8
Последнее редактирование:

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
без проблем, нужно навести мышку на википедию и кликнуть
https://yandex.ru/search/?lr=2&text=test
Код:
Tab Tab1 = instance.ActiveTab;
Random regRandom = new Random();
HtmlElement elWikiName = Tab1.FindElementByXPath("//div[contains(text(), 'Википедия')]", 0);
if (elWikiName.IsVoid) return "error: Не удалось найти elWikiName (поменялась верстка)";
Tab1.FullEmulationMouseMoveToHtmlElement(elWikiName);
Thread.Sleep(regRandom.Next(500, 2500));
Tab1.FullEmulationMouseClick("left", "click");
Tab1.WaitDownloading();
Thread.Sleep(regRandom.Next(3500, 5500));
project.SendInfoToLog("Перешли на Википедию", true);
это вариант поиска нужного элемента по названию и клик по ссылке.
 
  • Спасибо
Реакции: corptoday

corptoday

Client
Регистрация
16.10.2016
Сообщения
90
Благодарностей
7
Баллы
8
это вариант поиска нужного элемента по названию и клик по ссылке.
огромное спасибо! я уже разобрался в вашем коде и сделал лайт версию :-)

Код:
HtmlElement elPhoneTab = instance.ActiveTab.FindElementByXPath("//a[contains(@href, '/55/')]", 0);
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(elPhoneTab);
instance.ActiveTab.FullEmulationMouseClick("left", "click");
instance.ActiveTab.WaitDownloading();

ещё раз спасибо!
 
  • Спасибо
Реакции: kapelan28

corptoday

Client
Регистрация
16.10.2016
Сообщения
90
Благодарностей
7
Баллы
8
это вариант поиска нужного элемента по названию и клик по ссылке
Подскажите пожалуйста, есть ли возможность кликнуть на рандомную ссылку из выдачи, не на Википедию, а именно на рандомную из 10 результатов ?
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
Подскажите пожалуйста, есть ли возможность кликнуть на рандомную ссылку из выдачи, не на Википедию, а именно на рандомную из 10 результатов ?
да, есть. Тут на форуме выкладывали код как раз на эту тему.
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
а для гугла и яху можно использовать наработки с моего шаблона ФБ
 

PussyM

Client
Регистрация
08.04.2019
Сообщения
66
Благодарностей
21
Баллы
8
Можно примерно так сделать, но это не прокрутка, а следование экрана за курсором
Код:
Random num = new Random();
int x = num.Next(200,500); //горизонталь
int y = num.Next(100,1000); //вертикаль
instance.ActiveTab.FullEmulationMouseMove(x,y);
Работает примерно так
https://i.imgur.com/xSIxCQa.gifv

Ап.
Чуть чуть дополнил, происходит рандомное количество повторений из переменных проекта "ot" и "do"
Код:
Random rnd = new Random();
int p = rnd.Next((Convert.ToInt32(project.Variables["ot"].Value)),(Convert.ToInt32(project.Variables["do"].Value)));
Random num = new Random();
for(int i=0;i<p;i++)
{
int x = num.Next(200,500);
int y = num.Next(100,2000);
instance.ActiveTab.FullEmulationMouseMove(x,y);
}
С рандомной паузой после каждого повторения
Код:
Random rnd = new Random();
int p = rnd.Next((Convert.ToInt32(project.Variables["ot"].Value)),(Convert.ToInt32(project.Variables["do"].Value)));
Random num = new Random();
var rand = new Random();
for(int i=0;i<p;i++)
{
int x = num.Next(200,500); //горизонтальное положение мыши
int y = num.Next(100,2000); //вертикальное положение мыши
instance.ActiveTab.FullEmulationMouseMove(x,y); //ведем курсор к координатам горизонталь*вертикаль
System.Threading.Thread.Sleep(rand.Next(500, 2000)); // пауза от 0,5 секунды до 2-х секунд.
}
Выглядит это все дело, следующим образом
https://i.imgur.com/SkKxfTr.gifv
Данное решение мне помогло обойти recaptcha 3
Спасибо
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
В версии 7.6.0.0 планируется новый инструмент "Имитация просмотра страницы".
 

kot2566

Client
Регистрация
25.11.2019
Сообщения
19
Благодарностей
6
Баллы
3

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113

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