Эмуляция клика мыши на C#

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
доброго времени суток, господа!
вопрос собственно в тайтле...
как прописать в коде C# эмуляцию клика левой кнопки мыши по определенным координатам???
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
никто не знает?? хм ..
задам вопрос по точнее: как одним кубом записать прилагаемый проект на C#
 

Вложения

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
клик, клик )))
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
// emulation of click
instance.Click(100, 100, 200, 200, "Left", "Normal");
вот клик
 
  • Спасибо
Реакции: blud

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
ну если на то пошло сделай в кодкреаторе клик, потом перенеси в пм
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
ну эмуляцию уже в коде на шарпе
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
ну эмуляцию уже в коде на шарпе
так я об этом и спрашиваю ... вот кликнул я на нужное мне поле (активировал его) далее нужно прописать туда значение переменной, причем нужно именно так как это делает кубик " эмуляция клавиатуры" как это в коде прописать?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 101
Баллы
113
так я об этом и спрашиваю ... вот кликнул я на нужное мне поле (активировал его) далее нужно прописать туда значение переменной, причем нужно именно так как это делает кубик " эмуляция клавиатуры" как это в коде прописать?
Правый клик на экшене "Эмуляция клавиатуры" > "Конвертировать в C#", код такой:
Код:
instance.WaitFieldEmulationDelay();
// Эмулировать ввод текста
instance.SendText("Текст", 15);
 
  • Спасибо
Реакции: blud и Mikhail B.

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
Правый клик на экшене "Эмуляция клавиатуры" > "Конвертировать в C#", код такой:
Код:
instance.WaitFieldEmulationDelay();
// Эмулировать ввод текста
instance.SendText("Текст", 15);
спасибо
 

Sanekk

Client
Регистрация
24.06.2016
Сообщения
988
Благодарностей
388
Баллы
63
Приветствую всех.
Вообщем вопрос в продолжении темы.

Если кликать таким образом:
// emulation of click
instance.Click(100, 100, 200, 200, "Left", "Normal");

то при изменении размера окна браузера,меняются координаты до объекта и клик смещается в сторону и не всегда попадает в нужную область.
Как в с# сделать так чтобы вычислялась координата до объекта,например с помощью параметра leftinbrowser и уже по вычисленным координатам происходил клик?
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
Приветствую всех.
Вообщем вопрос в продолжении темы.

Если кликать таким образом:
// emulation of click
instance.Click(100, 100, 200, 200, "Left", "Normal");

то при изменении размера окна браузера,меняются координаты до объекта и клик смещается в сторону и не всегда попадает в нужную область.
Как в с# сделать так чтобы вычислялась координата до объекта,например с помощью параметра leftinbrowser и уже по вычисленным координатам происходил клик?
Кубики можно ковертировать в шарп. Если есть хоть небольшое понимание шарпа, то можно объединить их в один код.
2016-08-08_002547.jpg
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113
Только эмуляция страдает. Палят скриптами подобные клики. Лучше уж кликать через MouseMove или MouseClick как в примере ScrollIntoView.
 
  • Спасибо
Реакции: deopl

deopl

Client
Регистрация
06.12.2011
Сообщения
656
Благодарностей
125
Баллы
43
Только эмуляция страдает. Палят скриптами подобные клики. Лучше уж кликать через MouseMove или MouseClick как в примере ScrollIntoView.
Т.е. мы указываем элемент который нам нужно найти, он ищется и делается клик по нему?
А если вычислить координаты все и в промежутке рандомно кликать, то это не есть хорошо?
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113
На деле все оказывается чуть сложнее, теории. Ловцы ботов распределяют по страницам кучу клонов нужных полей с нулевыми размерами. И с этим можно бороться отбрасывая элементы с нулевыми размерами, но нас подстерегает новая ловушка - элементы могут иметь положительные размеры вместе с атрибутом display:none. Так что каждый раз приходится придумывать комплексное решение, или полностью переходить на запросы.

Ниже кусок кода эмулирующий сдлучайное движение мышкой в области кнопки перед кликом в случайном месте кнопки.

Код:
var rnd = new Random();
instance.ActiveTab.MouseMove(he.DisplacementInTabWindow.X + rnd.Next(0,he.Width / 5), he.DisplacementInTabWindow.Y + rnd.Next(0,he.Height / 5), he.DisplacementInTabWindow.X + rnd.Next(he.Width / 2,he.Width - 2), he.DisplacementInTabWindow.Y + rnd.Next(he.Height / 2,he.Height - 2), true);
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
На деле все оказывается чуть сложнее, теории. Ловцы ботов распределяют по страницам кучу клонов нужных полей с нулевыми размерами. И с этим можно бороться отбрасывая элементы с нулевыми размерами, но нас подстерегает новая ловушка - элементы могут иметь положительные размеры вместе с атрибутом display:none. Так что каждый раз приходится придумывать комплексное решение, или полностью переходить на запросы.

Ниже кусок кода эмулирующий сдлучайное движение мышкой в области кнопки перед кликом в случайном месте кнопки.

Код:
var rnd = new Random();
instance.ActiveTab.MouseMove(he.DisplacementInTabWindow.X + rnd.Next(0,he.Width / 5), he.DisplacementInTabWindow.Y + rnd.Next(0,he.Height / 5), he.DisplacementInTabWindow.X + rnd.Next(he.Width / 2,he.Width - 2), he.DisplacementInTabWindow.Y + rnd.Next(he.Height / 2,he.Height - 2), true);
:dm:Спасибо добрый волшебник!
 

Sanekk

Client
Регистрация
24.06.2016
Сообщения
988
Благодарностей
388
Баллы
63
Ниже кусок кода эмулирующий сдлучайное движение мышкой в области кнопки перед кликом в случайном месте кнопки.

Код:
var rnd = new Random();
instance.ActiveTab.MouseMove(he.DisplacementInTabWindow.X + rnd.Next(0,he.Width / 5), he.DisplacementInTabWindow.Y + rnd.Next(0,he.Height / 5), he.DisplacementInTabWindow.X + rnd.Next(he.Width / 2,he.Width - 2), he.DisplacementInTabWindow.Y + rnd.Next(he.Height / 2,he.Height - 2), true);
спасибо что подсказали как сделать random)

только не совсем понятно:
почему-то клик по кнопке не происходит,видно только 2 раза "навидение" на кнопку
и еще если сделать предварительно прокрутку до кнопки ""create"" то после прокрутки ""навидение"" происходит почему-то в верху страницы,т.е страница сама прокручивается вверх. Не могу понять что я делаю не так

Код:
instance.ActiveTab.Navigate("http://lessons.zennolab.com/en/registration", "");
instance.ActiveTab.WaitDownloading();
HtmlElement he = instance.ActiveTab.MainDocument.FindElementByAttribute("input:submit", "class", "field", "regexp", 0);
if (!he.IsVoid)
{
    he.ScrollIntoView();
    System.Threading.Thread.Sleep(1000);

    var rnd = new Random();
instance.ActiveTab.MouseMove(he.DisplacementInTabWindow.X + rnd.Next(0,he.Width / 5), he.DisplacementInTabWindow.Y + rnd.Next(0,he.Height / 5), he.DisplacementInTabWindow.X + rnd.Next(he.Width / 2,he.Width - 2), he.DisplacementInTabWindow.Y + rnd.Next(he.Height / 2,he.Height - 2), true);


}
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
почему-то клик по кнопке не происходит,видно только 2 раза "навидение" на кнопку
Ниже кусок кода эмулирующий сдлучайное движение мышкой в области кнопки перед кликом в случайном месте кнопки.

Код:
var rnd = new Random();
instance.ActiveTab.MouseMove(he.DisplacementInTabWindow.X + rnd.Next(0,he.Width / 5), he.DisplacementInTabWindow.Y + rnd.Next(0,he.Height / 5), he.DisplacementInTabWindow.X + rnd.Next(he.Width / 2,he.Width - 2), he.DisplacementInTabWindow.Y + rnd.Next(he.Height / 2,he.Height - 2), true);
 

Sanekk

Client
Регистрация
24.06.2016
Сообщения
988
Благодарностей
388
Баллы
63
ты имеешь ввиду что это без клика?
true в конце обозначает клик если я не ошибаюсь
 

Mikhail B.

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

Sanekk

Client
Регистрация
24.06.2016
Сообщения
988
Благодарностей
388
Баллы
63
Ниже кусок кода эмулирующий сдлучайное движение мышкой в области кнопки перед кликом в случайном месте кнопки.

Код:
var rnd = new Random();
instance.ActiveTab.MouseMove(he.DisplacementInTabWindow.X + rnd.Next(0,he.Width / 5), he.DisplacementInTabWindow.Y + rnd.Next(0,he.Height / 5), he.DisplacementInTabWindow.X + rnd.Next(he.Width / 2,he.Width - 2), he.DisplacementInTabWindow.Y + rnd.Next(he.Height / 2,he.Height - 2), true);
если эмуляция мыши делается сразу на странице то она попадает на кнопку или др. объект нормально,если сделать скролл страницы хоть на сантиметр то эмуляция мыши "прилипает" к верху страницы

вот код с навигейтом на страницу и скролом до объекта

Код:
instance.ActiveTab.Navigate("http://lessons.zennolab.com/en/registration", "");
instance.ActiveTab.WaitDownloading();
HtmlElement he = instance.ActiveTab.MainDocument.FindElementByAttribute("input:submit", "class", "field", "regexp", 0);
if (!he.IsVoid)
{
    he.ScrollIntoView();
    System.Threading.Thread.Sleep(1000);
    var rnd = new Random();
instance.ActiveTab.MouseMove(he.DisplacementInTabWindow.X + rnd.Next(0,he.Width / 5), he.DisplacementInTabWindow.Y + rnd.Next(0,he.Height / 5), he.DisplacementInTabWindow.X + rnd.Next(he.Width / 2,he.Width - 2), he.DisplacementInTabWindow.Y + rnd.Next(he.Height / 2,he.Height - 2), true);
}
 

Mikhail B.

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

Sanekk

Client
Регистрация
24.06.2016
Сообщения
988
Благодарностей
388
Баллы
63

Mikhail B.

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

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 651
Благодарностей
655
Баллы
113
Как кликнуть по кнопке, если используется канвас, как флеш? Клик по картинке проходит, но ничего не происходит, может есть какой то способ еще?
 

slavyn8213

Client
Регистрация
28.10.2018
Сообщения
173
Благодарностей
39
Баллы
28
подскажите пожалуйста как прописать в с+.Нужно кликать по одним координатам в течении 20 секунд-кликать нужно часто
instance.WaitFieldEmulationDelay();
// Эмулировать клик
instance.Click(400, 401, 400, 401, "Left", "Normal");
 

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