Гуглим:
получить координаты элемента site:zennolab.com
И потом подставляем координаты элемента к нашим точкам:
//ищем наш элдемент по XPath:
HtmlElement Elemetik = instance.ActiveTab.FindElementByXPath("//p", 0);
//его координаты подставляем в наши координаты первой точки в массиве
int x = Elemetik.DisplacementInTabWindow.X;
int y = Elemetik.DisplacementInTabWindow.Y;
Random rnd = new Random();
// указываем количество точек
int Kolichestvo_Tochek = 33;
// обьявляем массив точек, по которым будет двигаться курсор мыши
Point[] points = new Point[Kolichestvo_Tochek];
// в цикле заполняем наш масив
for (int i = 0; i<Kolichestvo_Tochek; i++)
{
// если координаты выходят за пределы страницы (минусовые), то водим не доходя до края (меняем на "чуть плюсовые").
if (x < 0) {
x = rnd.Next(0,5);
}
if (y < 0) {
y = rnd.Next(0,5);
}
points[i] = new Point(x, y);
project.SendInfoToLog(x.ToString() + " , " + y.ToString(), false); // выводим в лог координаты
// указываем рандомные пределы для сдвига курсора в пикселях для следующего круга цикла:
x += rnd.Next(-64,64);
y += rnd.Next(-64,64);
}
// в цикле двигаем курсором между точками, но обрабатываем массив координат уже с конца:
for (int i = Kolichestvo_Tochek-1; i>=0; i--)
{
//задаем рандомно скорость движения для каждого рывка:
instance.ActiveTab.FullEmulationMouseSetOptions(rnd.Next(4,7),rnd.Next(4,7),rnd.Next(2,5));
//Двигаем мышкой плавно:
instance.ActiveTab.FullEmulationMouseMove(points.ElementAt(i).X, points.ElementAt(i).Y);
}
//на всякий пожарный подводим к елементу курсор более рандомно, а то оно только к его крайней левой точке по координатам подводит:
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(Elemetik);
// и кликаем в этом месте:
instance.ActiveTab.FullEmulationMouseClick("left", "click");
Добрый день. Есть вот такой код (код ниже, код взят из вашего примера). Он введет мышку до определенного текста на странице. Мне нужно как то в этом коде сделать паузы рандомные (в пределах например от 1 от 2 секунд) между каждым движением мыши ( при переходе между точками ). Чтобы например получалось чтобы мышка доходила до нужного текста за 40-50 секунд например. Нашел у вас вот такую строчку в другом посте
//Делаем случайную паузу от 0,5 до 3 секунд
Thread.Sleep(rnd.Next(4,30) * 100);
Но не знаю как ее вставить в код.
И еще такой вопрос ,почему то когда мышка ведется к тексту часто бывает что она проходит намного ниже нужного текста , потом возвращается наверх , а потом только спускается к нужному тексту и там останавливается, а хотелось бы чтобы она только до текста спускалась.
//ищем наш элдемент по XPath:
HtmlElement Elemetik = instance.ActiveTab.FindElementByXPath("//span[contains(text(), 'Текст')]", 0);
//его координаты подставляем в наши координаты первой точки в массиве
int x = Elemetik.DisplacementInTabWindow.X;
int y = Elemetik.DisplacementInTabWindow.Y;
Random rnd = new Random();
// указываем количество точек
int Kolichestvo_Tochek = 20;
// обьявляем массив точек, по которым будет двигаться курсор мыши
Point[] points = new Point[Kolichestvo_Tochek];
// в цикле заполняем наш масив
for (int i = 0; i<Kolichestvo_Tochek; i++)
{
// если координаты выходят за пределы страницы (минусовые), то водим не доходя до края (меняем на "чуть плюсовые").
if (x < 0) {
x = rnd.Next(0,5);
}
if (y < 0) {
y = rnd.Next(0,5);
}
points
= new Point(x, y);
project.SendInfoToLog(x.ToString() + " , " + y.ToString(), false); // выводим в лог координаты
// указываем рандомные пределы для сдвига курсора в пикселях для следующего круга цикла:
x += rnd.Next(-150,150);
y += rnd.Next(-500,500);
}
// в цикле двигаем курсором между точками, но обрабатываем массив координат уже с конца:
for (int i = Kolichestvo_Tochek-1; i>=0; i--)
{
//задаем рандомно скорость движения для каждого рывка:
instance.ActiveTab.FullEmulationMouseSetOptions(rnd.Next(4,7),rnd.Next(4,7),rnd.Next(2,5));
//Двигаем мышкой плавно:
instance.ActiveTab.FullEmulationMouseMove(points.ElementAt(i).X, points.ElementAt(i).Y);
}
//на всякий пожарный подводим к елементу курсор более рандомно, а то оно только к его крайней левой точке по координатам подводит:
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(Elemetik);
// и кликаем в этом месте: