Как зажать клавишу клавиатуры. Прокрутка страницы.

username666

Client
Регистрация
20.03.2020
Сообщения
211
Благодарностей
89
Баллы
28
На сайте при прокрутке страницы попробовал использовать эмуляция клавиатуры {DOWN}. Но это нажатие настолько короткое, что почти ничего не прокручивается, доли пикселей, если же делать тоже самое в браузере и в ручную, то страница совершенно по-другому прокручивается, хотя было всего одно нажатие. Если же зажать {DOWN} то тоже идет прокрутка. {DOWN}{DOWN}{DOWN}{DOWN}{DOWN} в эмуляции тоже практически ничего не двигает с места. Как можно зажать клавишу {DOWN} например на 10 секунд?
 
Последнее редактирование:

loogle

Client
Регистрация
08.12.2013
Сообщения
294
Благодарностей
115
Баллы
43
Прокрутка вниз С#:
// Прокрутка колесиком мыши
//Прокрутка по вертикали, в пикселях
//Чтобы прокрутить 1000 пикселей ВНИЗ, указываем "1000"
int deltaY = 1000;

//Делаем прокрутку на нужное количество пикселей
instance.ActiveTab.FullEmulationMouseWheel(0, deltaY);
 
  • Спасибо
Реакции: username666

username666

Client
Регистрация
20.03.2020
Сообщения
211
Благодарностей
89
Баллы
28
Спасибо, это кажется намного шустрее чем этот код)
C#:
//------------------ входные настройки ---------------------------------------------------------//
int start =100;
int end = 150;
int max_delta = 4000;
int max_delta_rnd = 5000;
//-----------------------------------------------------------------------------------------------//
int Y_Start_Abs_pred =0; int Y_Start_Abs=0; int try_scroll=0; int delta_point =0;
Random rnd = new Random();
//-----------------------------------------------------------------------------------------------//
max_delta= max_delta + rnd.Next(0, max_delta_rnd);
while(true)
{
    delta_point = rnd.Next(start, end);
    instance.ActiveTab.FullEmulationMouseWheel(0,delta_point);
    Y_Start_Abs = - instance.ActiveTab.MainDocument.Body.DisplacementInTabWindow.Y;
    if ( Y_Start_Abs_pred == Y_Start_Abs ) try_scroll ++ ;
    else {
        Y_Start_Abs_pred = Y_Start_Abs;
        try_scroll=0;
    }
    if ( try_scroll > 2 ) { break; }
    if (Y_Start_Abs > max_delta ) { break; }
    ///// -------------------------------выход по внешнему требованию---------------------------------------------------------------------------------//
    if(((ZennoLab.InterfacesLibrary.ProjectModel.Collections.IContextExt)project.Context).IsInterrupted) throw new Exception("Внешнее прерывание"  );
    if(Global.Variables.IsProjectMaker && !Global.Variables.IsDebugMode)  throw new Exception("Внешнее прерывание "  );
    ///-----------------------------------------------------------------------------------------------------------------------------------------------//
}
 
  • Спасибо
Реакции: loogle

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 432
Баллы
113
C#:
instance.ActiveTab.FullEmulationMouseClick("left", "down");
Thread.Sleep(10000);
instance.ActiveTab.FullEmulationMouseClick("left", "up");
 
  • Спасибо
Реакции: loogle и username666

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113
Спасибо, это кажется намного шустрее чем этот код)
конечно шустрее, так как это малая часть того кода :bk:

103708


просто надо не копипастом заниматься, а разбирать код и понимать для чего он вообще был создан ;-)
 
  • Спасибо
Реакции: username666

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