Swipe

Form

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

Form

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

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

Form

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

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

nicanil

Moderator
Команда форума
Регистрация
06.03.2016
Сообщения
1 309
Благодарностей
1 058
Баллы
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
Сообщения
92
Благодарностей
9
Баллы
8
С помощью стандартных экшенов, к сожалению, такое сделать нельзя (по крайней мере для версии 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);
Большое спасибо, а не подскажите как сюда вставить рандомные значения (от и до)
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
1 487
Благодарностей
426
Баллы
83
  • Спасибо
Реакции: Form

Roman48

Client
Регистрация
28.02.2016
Сообщения
1 487
Благодарностей
426
Баллы
83
С помощью стандартных экшенов, к сожалению, такое сделать нельзя (по крайней мере для версии 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

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

Roman48

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

TazMan

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

nicanil

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

TazMan

Client
Регистрация
05.01.2017
Сообщения
164
Благодарностей
21
Баллы
18
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

Moderator
Команда форума
Регистрация
06.03.2016
Сообщения
1 309
Благодарностей
1 058
Баллы
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
 
  • Спасибо
Реакции: djaga

TazMan

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

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