Как сделать плавный свайп

wmajiug3e

Client
Регистрация
29.11.2019
Сообщения
64
Благодарностей
16
Баллы
8
94614

Есть капча-слайдер, ее нужно просто свайпнуть вправо, раньше это делал через эмуляцию мыши, но слайдер обновился и мышкой оно проводит, а слайдер стоит на месте. Старый код:
C#:
Tab tab = instance.ActiveTab;

HtmlElement he = instance.ActiveTab.FindElementByAttribute("span", "class", "nc-lang-cnt", "regexp", 0);

int leftintab = int.Parse(he.GetAttribute("leftinbrowser"));
int topintab = int.Parse(he.GetAttribute("topinbrowser"));
 
Random rnd = new Random();
int X = leftintab + rnd.Next(1, 2);
int Y = topintab + rnd.Next(1, 2);

int X1 = leftintab + rnd.Next(1, 3);
int Y1 = topintab + rnd.Next(1, 2);

tab.FullEmulationMouseDragAndDrop(X, Y, X + 340, Y + 3);
Переделал на эмуляцию тача, оно проводит без проблем, но сайт постоянно просит еще раз провезти (палит что не руками проводится). Я в коде не шарю поэтому подскажите как сделать чтобы оно более плавно проводило по слайдеру и возможно как то более рандомно чтобы слайдер не палил. Вот код:
C#:
var tab = instance.ActiveTab;

var canvas = tab.FindElementByXPath(@"//*[@id=""nc_1_n1z""]", 0);

var width = canvas.BoundingClientWidth;
var height = canvas.BoundingClientHeight;

var offsetX = width / 4;
var minX = canvas.DisplacementInBrowser.X + offsetX;
var maxX = minX + width - 2*offsetX;

var offsetY = height / 4;
var minY = canvas.DisplacementInBrowser.Y + offsetY;
var maxY = minY;

tab.Touch.SwipeBetween(minX, minY, maxX + 340, maxY);
 
  • Спасибо
Реакции: chuga

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 042
Благодарностей
545
Баллы
113
Посмотреть вложение 94614
Есть капча-слайдер, ее нужно просто свайпнуть вправо, раньше это делал через эмуляцию мыши, но слайдер обновился и мышкой оно проводит, а слайдер стоит на месте. Старый код:
C#:
Tab tab = instance.ActiveTab;

HtmlElement he = instance.ActiveTab.FindElementByAttribute("span", "class", "nc-lang-cnt", "regexp", 0);

int leftintab = int.Parse(he.GetAttribute("leftinbrowser"));
int topintab = int.Parse(he.GetAttribute("topinbrowser"));

Random rnd = new Random();
int X = leftintab + rnd.Next(1, 2);
int Y = topintab + rnd.Next(1, 2);

int X1 = leftintab + rnd.Next(1, 3);
int Y1 = topintab + rnd.Next(1, 2);

tab.FullEmulationMouseDragAndDrop(X, Y, X + 340, Y + 3);
Переделал на эмуляцию тача, оно проводит без проблем, но сайт постоянно просит еще раз провезти (палит что не руками проводится). Я в коде не шарю поэтому подскажите как сделать чтобы оно более плавно проводило по слайдеру и возможно как то более рандомно чтобы слайдер не палил. Вот код:
C#:
var tab = instance.ActiveTab;

var canvas = tab.FindElementByXPath(@"//*[@id=""nc_1_n1z""]", 0);

var width = canvas.BoundingClientWidth;
var height = canvas.BoundingClientHeight;

var offsetX = width / 4;
var minX = canvas.DisplacementInBrowser.X + offsetX;
var maxX = minX + width - 2*offsetX;

var offsetY = height / 4;
var minY = canvas.DisplacementInBrowser.Y + offsetY;
var maxY = minY;

tab.Touch.SwipeBetween(minX, minY, maxX + 340, maxY);
В таче есть параметры эмуляции, задать их можно следующим образом.


C#:
//Создаем экземпляр класса для задания параметров эмуляции
            TouchEmulationParameters touchEmulationParameters = new TouchEmulationParameters();

            touchEmulationParameters.Acceleration = 0;
            touchEmulationParameters.LongTouchLengthMs = 0;
            touchEmulationParameters.MaxCurvature = 0;
            touchEmulationParameters.MaxCurvePeakShift = 0;
            touchEmulationParameters.MaxStep = 0;
            touchEmulationParameters.MaxSwipeShiftTowardsThumb = 0;
            touchEmulationParameters.MinCurvature = 0;
            touchEmulationParameters.MinCurvePeakShift = 0;
            touchEmulationParameters.MinStep = 0;
            touchEmulationParameters.MinSwipeShiftTowardsThumb = 0;
            touchEmulationParameters.PauseAfterTouchMs = 0;
            touchEmulationParameters.PauseBetweenStepsMs = 0;
            touchEmulationParameters.PauseBetweenSwipesMs = 0;
            touchEmulationParameters.RectangleBasePointPartH = 0;
            touchEmulationParameters.RectangleBasePointPartW = 0;
            touchEmulationParameters.RightThumbProbability = 0;
            touchEmulationParameters.SwipeDeviationX = 0;
            touchEmulationParameters.SwipeDeviationY = 0;
            touchEmulationParameters.SwipeFractionX = 0;
            touchEmulationParameters.SwipeFractionY = 0;
            touchEmulationParameters.TouchLengthMs = 0;

            //Передаем в метод указания параметров эмуляции наш экземпляр класса с сгенерированными параметрами
           instance.ActiveTab.Touch.SetTouchEmulationParameters(touchEmulationParameters);
            //Делаем свайп
           instance.ActiveTab.Touch.SwipeBetween(minX, minY, maxX + 340, maxY);
Там где нули, надо прописывать значения, узнать диапазон допустимых значений для каждого параметра эмуляции можно добавив этот код в c# сниппет и навести на нужный параметр. Так же там будет написано что он делает.

11111.jpg
 

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