Swipe

Form

Client
Регистрация
05.09.2020
Сообщения
314
Благодарностей
117
Баллы
43
Подскажите пожалуйста, как можно свайпнуть вверх на рандомной число пикселей (от и до) и с рандомной скоростью ( от и до)?
 

Form

Client
Регистрация
05.09.2020
Сообщения
314
Благодарностей
117
Баллы
43
Или такое в принципе невозможно?
 
Регистрация
07.08.2019
Сообщения
76
Благодарностей
80
Баллы
18
Нужен именно свайп? Или колесиком мыши тоже можно покрутить?)
Если можно, то вот код
instance.ActiveTab.FullEmulationMouseWheel(0, 2500);

Где 2500 это величина на сколько нужно прокрутить страницу :-)
 
  • Спасибо
Реакции: Alex.A и Form

Form

Client
Регистрация
05.09.2020
Сообщения
314
Благодарностей
117
Баллы
43
Нужен именно свайп? Или колесиком мыши тоже можно покрутить?)
Если можно, то вот код
instance.ActiveTab.FullEmulationMouseWheel(0, 2500);

Где 2500 это величина на сколько нужно прокрутить страницу :-)
Спасибо за ответ, но нет, именно мобильный свайп нужен
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
С помощью стандартных экшенов, к сожалению, такое сделать нельзя (по крайней мере для версии 7.2.0.0).
Но, можно сделать с помощью C#

Постарался как можно подробней прокомментировать код.
C#:
// Получаем копию текущих настроек тача.
TouchEmulationParameters touchParams = instance.ActiveTab.Touch.GetCopyOfTouchEmulationParameters();

// Устанавливаем минимальную скорость
// Данная настройка принимает значения от 1.0 до 2.0.
touchParams.Acceleration = 1.0F;

// Устанавливаем обновлённые настройки.
instance.ActiveTab.Touch.SetTouchEmulationParameters(touchParams);

// Делаем свайп между двумя координатами.
// Все точки должны находиться в области видимости.
// Первая пара чисел - координаты X, Y начала свайпа,
// вторая пара - координаты конца свайпа.
instance.ActiveTab.Touch.SwipeBetween(163, 400, 163, 200);

// Снова получаем копию текущих настроек.
touchParams = instance.ActiveTab.Touch.GetCopyOfTouchEmulationParameters();

// Теперь устанавливаем максимально возможную скорость - 2.0.
touchParams.Acceleration = 2.0F;

// Устанавливаем обновлённые настройки.
instance.ActiveTab.Touch.SetTouchEmulationParameters(touchParams);

// Делаем свайп между двумя координатами.
// Все точки должны находиться в области видимости.
instance.ActiveTab.Touch.SwipeBetween(163, 400, 163, 200);
 

Form

Client
Регистрация
05.09.2020
Сообщения
314
Благодарностей
117
Баллы
43
С помощью стандартных экшенов, к сожалению, такое сделать нельзя (по крайней мере для версии 7.2.0.0).
Но, можно сделать с помощью C#

Постарался как можно подробней прокомментировать код.
C#:
// Получаем копию текущих настроек тача.
TouchEmulationParameters touchParams = instance.ActiveTab.Touch.GetCopyOfTouchEmulationParameters();

// Устанавливаем минимальную скорость
// Данная настройка принимает значения от 1.0 до 2.0.
touchParams.Acceleration = 1.0F;

// Устанавливаем обновлённые настройки.
instance.ActiveTab.Touch.SetTouchEmulationParameters(touchParams);

// Делаем свайп между двумя координатами.
// Все точки должны находиться в области видимости.
// Первая пара чисел - координаты X, Y начала свайпа,
// вторая пара - координаты конца свайпа.
instance.ActiveTab.Touch.SwipeBetween(163, 400, 163, 200);

// Снова получаем копию текущих настроек.
touchParams = instance.ActiveTab.Touch.GetCopyOfTouchEmulationParameters();

// Теперь устанавливаем максимально возможную скорость - 2.0.
touchParams.Acceleration = 2.0F;

// Устанавливаем обновлённые настройки.
instance.ActiveTab.Touch.SetTouchEmulationParameters(touchParams);

// Делаем свайп между двумя координатами.
// Все точки должны находиться в области видимости.
instance.ActiveTab.Touch.SwipeBetween(163, 400, 163, 200);
Большое спасибо, а не подскажите как сюда вставить рандомные значения (от и до)
 

lomshakov

Client
Регистрация
25.11.2019
Сообщения
18
Благодарностей
17
Баллы
3
  • Спасибо
Реакции: Form

Form

Client
Регистрация
05.09.2020
Сообщения
314
Благодарностей
117
Баллы
43

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
  • Спасибо
Реакции: Form

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
С помощью стандартных экшенов, к сожалению, такое сделать нельзя (по крайней мере для версии 7.2.0.0).
Но, можно сделать с помощью C#

Постарался как можно подробней прокомментировать код.
C#:
// Получаем копию текущих настроек тача.
TouchEmulationParameters touchParams = instance.ActiveTab.Touch.GetCopyOfTouchEmulationParameters();

// Устанавливаем минимальную скорость
// Данная настройка принимает значения от 1.0 до 2.0.
touchParams.Acceleration = 1.0F;

// Устанавливаем обновлённые настройки.
instance.ActiveTab.Touch.SetTouchEmulationParameters(touchParams);

// Делаем свайп между двумя координатами.
// Все точки должны находиться в области видимости.
// Первая пара чисел - координаты X, Y начала свайпа,
// вторая пара - координаты конца свайпа.
instance.ActiveTab.Touch.SwipeBetween(163, 400, 163, 200);

// Снова получаем копию текущих настроек.
touchParams = instance.ActiveTab.Touch.GetCopyOfTouchEmulationParameters();

// Теперь устанавливаем максимально возможную скорость - 2.0.
touchParams.Acceleration = 2.0F;

// Устанавливаем обновлённые настройки.
instance.ActiveTab.Touch.SetTouchEmulationParameters(touchParams);

// Делаем свайп между двумя координатами.
// Все точки должны находиться в области видимости.
instance.ActiveTab.Touch.SwipeBetween(163, 400, 163, 200);
Можно как то, этим кодом до элемента просвайпить? Желательно XPath
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
Можно как то, этим кодом до элемента просвайпить? Желательно XPath
А обязательно этим кодом?
Просто есть метод который свайпит из текущей области до указанного элемента
C#:
instance.ActiveTab.Touch.SwipeIntoView(HtmlElement he);
 
  • Спасибо
Реакции: avtostopshik

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
А обязательно этим кодом?
Просто есть метод который свайпит из текущей области до указанного элемента
C#:
instance.ActiveTab.Touch.SwipeIntoView(HtmlElement he);
Но я просто спросил, зачем обязательно.
 

TazMan

Client
Регистрация
05.01.2017
Сообщения
236
Благодарностей
37
Баллы
28
А обязательно этим кодом?
Просто есть метод который свайпит из текущей области до указанного элемента
C#:
instance.ActiveTab.Touch.SwipeIntoView(HtmlElement he);
стоит версия 7,3,0,0 .. и что то она не свайпит до элемента если он за пределами видимости . элемент сам находит точно .
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
стоит версия 7,3,0,0 .. и что то она не свайпит до элемента если он за пределами видимости . элемент сам находит точно .
Только что проверил: открыл страницу этой темы, в качестве XPath использовал //a[text()='TazMan'] - экшен отработал нормально.
68116
Можете скинуть свой проект, чтоб я у себя проверил?
 

TazMan

Client
Регистрация
05.01.2017
Сообщения
236
Благодарностей
37
Баллы
28
C#:
Tab tab = instance.ActiveTab;
if ((tab.IsVoid) || (tab.IsNull)) return -1;
if (tab.IsBusy) tab.WaitDownloading();
tab.Navigate("https://touch.mail.ru/messages/", "");
if (tab.IsBusy) tab.WaitDownloading();

if (tab.IsVoid || tab.IsNull) return -1;
var attributes = ZennoPoster.Parser.ParseByXpath(tab, ZennoLab.InterfacesLibrary.Enums.Parser.SourceType.Dom, "//div[contains(@class,'messageline_unread')]//span[contains(@class, 'messageline__subject')]", "innerText", true).ToList();
attributes.Filter(ZennoLab.InterfacesLibrary.Enums.Parser.FilterType.None, "");
attributes.Range("all");

Random num = new Random();
int rnd = num.Next(0,attributes.Count);
string text = attributes.ElementAt(rnd);
attributes.RemoveAt(rnd);
project.SendInfoToLog(text);
HtmlElement he = instance.ActiveTab.FindElementByXPath("//div[contains(@class,'messageline_unread')]//span[contains(@class, 'messageline__subject')and contains(text(),'"+text+"')]/..",0);
if (he.IsVoid) return -1;
instance.ActiveTab.Touch.SwipeIntoView(he);
instance.ActiveTab.Touch.Touch(he);

конечно надо залогиниться на аккаунт под мобильным профилем .

попробовал еще раз . работает только если элемент в окне показывается . за пределами - нет. хоть сам элемент и находит .
 
Последнее редактирование:

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
попробовал еще раз . работает только если элемент в окне показывается . за пределами - нет. хоть сам элемент и находит .
У меня Ваш код отработал. Только я его немного подправил: добавил паузу, чтоб страница подгрузилась и выбирал не случайное непрочитанное письмо, а последнее.
C#:
Tab tab = instance.ActiveTab;
if ((tab.IsVoid) || (tab.IsNull)) return -1;
if (tab.IsBusy) tab.WaitDownloading();
tab.Navigate("https://touch.mail.ru/messages/", "");
if (tab.IsBusy) tab.WaitDownloading();
Thread.Sleep(5000);

if (tab.IsVoid || tab.IsNull) return -1;
var attributes = ZennoPoster.Parser.ParseByXpath(tab, ZennoLab.InterfacesLibrary.Enums.Parser.SourceType.Dom, "//div[contains(@class,'messageline_unread')]//span[contains([USER=46442]class[/USER], 'messageline__subject')]", "innerText", true).ToList();
attributes.Filter(ZennoLab.InterfacesLibrary.Enums.Parser.FilterType.None, "");
attributes.Range("all");
/*Random num = new Random();
int rnd = num.Next(0,attributes.Count);*/
string text = attributes.Last();
//attributes.RemoveAt(rnd);
project.SendInfoToLog(text);
HtmlElement he = instance.ActiveTab.FindElementByXPath("//div[contains(@class,'messageline_unread')]//span[contains([USER=46442]class[/USER], 'messageline__subject')and contains(text(),'"+text+"')]/..",0);
if (he.IsVoid) return -1;
instance.ActiveTab.Touch.SwipeIntoView(he);
instance.ActiveTab.Touch.Touch(he);
68125
 
  • Спасибо
Реакции: art22 и djaga

TazMan

Client
Регистрация
05.01.2017
Сообщения
236
Благодарностей
37
Баллы
28
сработало 1 раз . вернул статус не прочитано .refresh - поместил за экран - элемент находит но не свайпит . как только в зоне видимости - все работает %)
 
Последнее редактирование:

baracuda

Client
Регистрация
19.06.2013
Сообщения
793
Благодарностей
278
Баллы
63
Всем перивет. подскажите как рандомить touchParams.Acceleration
 

alex_mgn

Client
Регистрация
30.01.2021
Сообщения
48
Благодарностей
18
Баллы
8

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
А как реализовать свайп вниз и вверх?) Использую сейчас мобильные профили и эмитирую действия нужен естественная имитация вниз вверх, скажем зажимаем пальцем экран и двигаем вниз... на определенный уровень и чтобы зажатие пальца тоже было с разных точек, а не с одной, и желательно координаты чтобы брались из переменной так как все будет рандомные
 
  • Спасибо
Реакции: djaga

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
733
Благодарностей
485
Баллы
63

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