FullEmulationMouse

alexandr939

Client
Регистрация
21.03.2016
Сообщения
143
Благодарностей
8
Баллы
18
есть снипет:
Код:
Tab tab = instance.ActiveTab;

    HtmlElement he = tab.FindElementByAttribute("div", "class", "modal-body", "text", 0);
    int leftintab = int.Parse(he.GetAttribute("leftintab"));
    int topintab = int.Parse(he.GetAttribute("topintab"));
    
    Random rnd = new Random();
    int X = leftintab + rnd.Next(0, 50);
    int Y1 = topintab + rnd.Next(-10, 10);

    tab.MouseClick(X + 35, Y1 + 20, "left", "down");
    Point[] points1 = new Point[12]
    {
        new Point(X + 60, Y1 + 50),
        new Point(X + 80, Y1 + 50),
        new Point(X + 100, Y1 + 50),
        new Point(X + 120, Y1 + 50),
        new Point(X + 140, Y1 + 50),
        new Point(X + 160, Y1 + 50),
        new Point(X + 180, Y1 + 50),
        new Point(X + 200, Y1 + 50),
        new Point(X + 220, Y1 + 50),
        new Point(X + 250, Y1 + 50),
        new Point(X + 280, Y1 + 50),
        new Point(X + 310, Y1 + 50),
    };
    int[] delay1 = new int[12]
    {
        rnd.Next(20, 100), rnd.Next(20, 100), rnd.Next(20, 100),
        rnd.Next(20, 100), rnd.Next(20, 50), rnd.Next(20, 100),
        rnd.Next(20, 50), rnd.Next(20, 100), rnd.Next(20, 100),
        rnd.Next(20, 100), rnd.Next(20, 120), rnd.Next(20, 120)
    };
  
     tab.MouseMove(points1, delay1);
     tab.MouseClick(X + 310, Y1 + 50, "left", "up");
Как все это переделать в FullEmulationMouse?
 
Последнее редактирование:

alexandr939

Client
Регистрация
21.03.2016
Сообщения
143
Благодарностей
8
Баллы
18
Не ясно пока - как делать движение мыши по координатам внутри элемента?
 

LaGir

Client
Регистрация
01.10.2015
Сообщения
211
Благодарностей
849
Баллы
93
Как все это переделать в FullEmulationMouse?
Судя по коду, делается Drag-and-drop, его можно так переделать:
C#:
Tab tab = instance.ActiveTab;

HtmlElement he = tab.FindElementByAttribute("div", "class", "modal-body", "text", 0);
int leftintab = int.Parse(he.GetAttribute("leftintab"));
int topintab = int.Parse(he.GetAttribute("topintab"));

Random rnd = new Random();
int X = leftintab + rnd.Next(0, 50);
int Y1 = topintab + rnd.Next(-10, 10);

tab.FullEmulationMouseDragAndDrop(X + 35, Y1 + 20, X + 310, Y1 + 50);
То же самое, но чутка по-другому
C#:
Tab tab = instance.ActiveTab;

HtmlElement he = tab.FindElementByAttribute("div", "class", "modal-body", "text", 0);
int leftintab = int.Parse(he.GetAttribute("leftintab"));
int topintab = int.Parse(he.GetAttribute("topintab"));

Random rnd = new Random();
int X = leftintab + rnd.Next(0, 50);
int Y1 = topintab + rnd.Next(-10, 10);

tab.FullEmulationMouseMove(X + 35, Y1 + 20);
tab.FullEmulationMouseClick("left", "down");

tab.FullEmulationMouseMove(X + 310, Y1 + 50);
tab.FullEmulationMouseClick("left", "up");
Ну и на всякий случай полный аналог исходного сниппета, только с методами FullEmulationMouse
C#:
Tab tab = instance.ActiveTab;
HtmlElement he = tab.FindElementByAttribute("div", "class", "modal-body", "text", 0);
int leftintab = int.Parse(he.GetAttribute("leftintab"));
int topintab = int.Parse(he.GetAttribute("topintab"));

Random rnd = new Random();
int X = leftintab + rnd.Next(0, 50);
int Y1 = topintab + rnd.Next(-10, 10);

tab.FullEmulationMouseMove(X + 35, Y1 + 20);
tab.FullEmulationMouseClick("left", "down");
Point[] points1 = new Point[12]
{
    new Point(X + 60, Y1 + 50),
    new Point(X + 80, Y1 + 50),
    new Point(X + 100, Y1 + 50),
    new Point(X + 120, Y1 + 50),
    new Point(X + 140, Y1 + 50),
    new Point(X + 160, Y1 + 50),
    new Point(X + 180, Y1 + 50),
    new Point(X + 200, Y1 + 50),
    new Point(X + 220, Y1 + 50),
    new Point(X + 250, Y1 + 50),
    new Point(X + 280, Y1 + 50),
    new Point(X + 310, Y1 + 50),
};

int[] delay1 = new int[12]
{
    rnd.Next(20, 100), rnd.Next(20, 100), rnd.Next(20, 100),
    rnd.Next(20, 100), rnd.Next(20, 50), rnd.Next(20, 100),
    rnd.Next(20, 50), rnd.Next(20, 100), rnd.Next(20, 100),
    rnd.Next(20, 100), rnd.Next(20, 120), rnd.Next(20, 120)
};

for (int i=0; i<12; i++){
    tab.FullEmulationMouseMove(points1[i].X, points1[i].Y);
    Thread.Sleep(delay1[i]);
}
tab.FullEmulationMouseClick("left", "up");

Не ясно пока - как делать движение мыши по координатам внутри элемента?
Для этого достаточно знать все координаты элемента, ну а дальше в зависимости от того что именно нужно сделать
C#:
Tab tab = instance.ActiveTab;
HtmlElement he = tab.FindElementByAttribute("div", "class", "modal-body", "text", 0);

//Начальная координата элемента по X
int heX1 = int.Parse(he.GetAttribute("leftintab"));
//Начальная координата элемента по Y
int heY1 = int.Parse(he.GetAttribute("topintab"));
//Конечная координата элемента по X
int heX2 = int.Parse(he.GetAttribute("leftintab"))+he.Width;
//Конечная координата элемента по Y
int heY2 = int.Parse(he.GetAttribute("topintab"))+he.Height;
 

alexandr939

Client
Регистрация
21.03.2016
Сообщения
143
Благодарностей
8
Баллы
18
Для этого достаточно знать все координаты элемента, ну а дальше в зависимости от того что именно нужно сделать
C#:
Tab tab = instance.ActiveTab;
HtmlElement he = tab.FindElementByAttribute("div", "class", "modal-body", "text", 0);

//Начальная координата элемента по X
int heX1 = int.Parse(he.GetAttribute("leftintab"));
//Начальная координата элемента по Y
int heY1 = int.Parse(he.GetAttribute("topintab"));
//Конечная координата элемента по X
int heX2 = int.Parse(he.GetAttribute("leftintab"))+he.Width;
//Конечная координата элемента по Y
int heY2 = int.Parse(he.GetAttribute("topintab"))+he.Height;
Вот только дело в том что элемент находится далеко внизу страницы, и в итоге когда делаешь движение мыши по этим взятым координатам, то он идет на самый вверх сайта и делает их там, вместо того чтобы делать их там где надо, в старом методе эмуляции мыши с этим проблем нету, и кстати чем отличается старый метод от нового?
 

Apostol

Client
Регистрация
25.12.2014
Сообщения
99
Благодарностей
65
Баллы
18
Вот только дело в том что элемент находится далеко внизу страницы, и в итоге когда делаешь движение мыши по этим взятым координатам, то он идет на самый вверх сайта и делает их там, вместо того чтобы делать их там где надо, в старом методе эмуляции мыши с этим проблем нету, и кстати чем отличается старый метод от нового?
Попробуй использовать topInBrowser вместо topintab.
 

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