если можно, пример кода.. а то я, если честно ничего не понял (((
там он естьесли можно, пример кода.. а то я, если честно ничего не понял (((
спасибо разобрался ... теперь бы еще узнать, как в код эмуляцию клавиатуры встроить// emulation of click
instance.Click(100, 100, 200, 200, "Left", "Normal");
вот клик
так я об этом и спрашиваю ... вот кликнул я на нужное мне поле (активировал его) далее нужно прописать туда значение переменной, причем нужно именно так как это делает кубик " эмуляция клавиатуры" как это в коде прописать?ну эмуляцию уже в коде на шарпе
Правый клик на экшене "Эмуляция клавиатуры" > "Конвертировать в C#", код такой:так я об этом и спрашиваю ... вот кликнул я на нужное мне поле (активировал его) далее нужно прописать туда значение переменной, причем нужно именно так как это делает кубик " эмуляция клавиатуры" как это в коде прописать?
instance.WaitFieldEmulationDelay();
// Эмулировать ввод текста
instance.SendText("Текст", 15);
спасибоПравый клик на экшене "Эмуляция клавиатуры" > "Конвертировать в C#", код такой:
Код:instance.WaitFieldEmulationDelay(); // Эмулировать ввод текста instance.SendText("Текст", 15);
Кубики можно ковертировать в шарп. Если есть хоть небольшое понимание шарпа, то можно объединить их в один код.Приветствую всех.
Вообщем вопрос в продолжении темы.
Если кликать таким образом:
// emulation of click
instance.Click(100, 100, 200, 200, "Left", "Normal");
то при изменении размера окна браузера,меняются координаты до объекта и клик смещается в сторону и не всегда попадает в нужную область.
Как в с# сделать так чтобы вычислялась координата до объекта,например с помощью параметра leftinbrowser и уже по вычисленным координатам происходил клик?
Т.е. мы указываем элемент который нам нужно найти, он ищется и делается клик по нему?Только эмуляция страдает. Палят скриптами подобные клики. Лучше уж кликать через MouseMove или MouseClick как в примере ScrollIntoView.
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);
спасибо что подсказали как сделать random)Ниже кусок кода эмулирующий сдлучайное движение мышкой в области кнопки перед кликом в случайном месте кнопки.
Код: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);
}
почему-то клик по кнопке не происходит,видно только 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);
ключевой момент тут MouseMoveты имеешь ввиду что это без клика?
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);
}
Что бы кликало куда надо используйте leftinbrowser topinbrowser.если сделать скролл страницы хоть на сантиметр то эмуляция мыши "прилипает" к верху страницы
DisplacementInTabWindow.X=leftinbrowserЧто бы кликало куда надо используйте leftinbrowser topinbrowser.
Наверно это, я использую стандартные экшны.DisplacementInTabWindow.X=leftinbrowser
DisplacementInTabWindow.y=topinbrowser