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

  • Автор темы Автор темы blud
  • Дата начала Дата начала

blud

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

Вложения

клик, клик )))
 
// emulation of click
instance.Click(100, 100, 200, 200, "Left", "Normal");
вот клик
 
  • Оценить
Реакции: blud
ну если на то пошло сделай в кодкреаторе клик, потом перенеси в пм
 
ну эмуляцию уже в коде на шарпе
 
ну эмуляцию уже в коде на шарпе
так я об этом и спрашиваю ... вот кликнул я на нужное мне поле (активировал его) далее нужно прописать туда значение переменной, причем нужно именно так как это делает кубик " эмуляция клавиатуры" как это в коде прописать?
 
так я об этом и спрашиваю ... вот кликнул я на нужное мне поле (активировал его) далее нужно прописать туда значение переменной, причем нужно именно так как это делает кубик " эмуляция клавиатуры" как это в коде прописать?
Правый клик на экшене "Эмуляция клавиатуры" > "Конвертировать в C#", код такой:
Код:
Развернуть Свернуть Копировать
instance.WaitFieldEmulationDelay();
// Эмулировать ввод текста
instance.SendText("Текст", 15);
 
  • Оценить
Реакции: blud и Mikhail B.
Правый клик на экшене "Эмуляция клавиатуры" > "Конвертировать в C#", код такой:
Код:
Развернуть Свернуть Копировать
instance.WaitFieldEmulationDelay();
// Эмулировать ввод текста
instance.SendText("Текст", 15);
спасибо
 
Приветствую всех.
Вообщем вопрос в продолжении темы.

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

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

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

то при изменении размера окна браузера,меняются координаты до объекта и клик смещается в сторону и не всегда попадает в нужную область.
Как в с# сделать так чтобы вычислялась координата до объекта,например с помощью параметра leftinbrowser и уже по вычисленным координатам происходил клик?
Кубики можно ковертировать в шарп. Если есть хоть небольшое понимание шарпа, то можно объединить их в один код.
2016-08-08_002547.jpg
 
Только эмуляция страдает. Палят скриптами подобные клики. Лучше уж кликать через MouseMove или MouseClick как в примере ScrollIntoView.
 
  • Оценить
Реакции: deopl
Только эмуляция страдает. Палят скриптами подобные клики. Лучше уж кликать через MouseMove или MouseClick как в примере ScrollIntoView.
Т.е. мы указываем элемент который нам нужно найти, он ищется и делается клик по нему?
А если вычислить координаты все и в промежутке рандомно кликать, то это не есть хорошо?
 
На деле все оказывается чуть сложнее, теории. Ловцы ботов распределяют по страницам кучу клонов нужных полей с нулевыми размерами. И с этим можно бороться отбрасывая элементы с нулевыми размерами, но нас подстерегает новая ловушка - элементы могут иметь положительные размеры вместе с атрибутом 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);
 
На деле все оказывается чуть сложнее, теории. Ловцы ботов распределяют по страницам кучу клонов нужных полей с нулевыми размерами. И с этим можно бороться отбрасывая элементы с нулевыми размерами, но нас подстерегает новая ловушка - элементы могут иметь положительные размеры вместе с атрибутом 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:Спасибо добрый волшебник!
 
Ниже кусок кода эмулирующий сдлучайное движение мышкой в области кнопки перед кликом в случайном месте кнопки.

Код:
Развернуть Свернуть Копировать
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);


}
 
почему-то клик по кнопке не происходит,видно только 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);
 
ты имеешь ввиду что это без клика?
true в конце обозначает клик если я не ошибаюсь
 
Ниже кусок кода эмулирующий сдлучайное движение мышкой в области кнопки перед кликом в случайном месте кнопки.

Код:
Развернуть Свернуть Копировать
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);
}
 
Как кликнуть по кнопке, если используется канвас, как флеш? Клик по картинке проходит, но ничего не происходит, может есть какой то способ еще?
 
подскажите пожалуйста как прописать в с+.Нужно кликать по одним координатам в течении 20 секунд-кликать нужно часто
instance.WaitFieldEmulationDelay();
// Эмулировать клик
instance.Click(400, 401, 400, 401, "Left", "Normal");
 

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