Помощь с C# \ Touch событие

Kinomanius

Активный пользователь
Регистрация
20.01.2020
Сообщения
184
Благодарностей
26
Баллы
28
var tab = instance.ActiveTab;
var init = tab.FindElementByXPath("/html/body/button", 0); // Ищем HTML элемент через XPath
tab.Touch.Touch(init); // Жмём по нему

Как можно переделать чтоб оно жмакало по координатам на экране, а не по какому то элементу ?
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
Нигде нет описания пока, попробуй в скобках координаты через запятую указать. Если не сработает, то лучше спросить в теме новости по версии.
 

Kinomanius

Активный пользователь
Регистрация
20.01.2020
Сообщения
184
Благодарностей
26
Баллы
28
Я слабо разбираюсь, но мне кажется достаточно будет заменить FindElementByXPath на какую то функцию( если верно выразился ), которая отвечает не за поиск элемента, а за нажатие... например tab.Touch ( я просто не знаю как такая функция называется) и оно заработает?
 

Max

Client
Регистрация
17.06.2012
Сообщения
168
Благодарностей
44
Баллы
28
Я слабо разбираюсь, но мне кажется достаточно будет заменить FindElementByXPath на какую то функцию( если верно выразился ), которая отвечает не за поиск элемента, а за нажатие... например tab.Touch ( я просто не знаю как такая функция называется) и оно заработает?
Код:
public void Touch(
   int x,
   int y,
   int pauseMs
)
там перегрузка указана в чем проблема tab.Touch.Touch(1,3,3000)
 

Kinomanius

Активный пользователь
Регистрация
20.01.2020
Сообщения
184
Благодарностей
26
Баллы
28
Код:
public void Touch(
   int x,
   int y,
   int pauseMs
    );
tab.Touch.Touch(123,123,3000);
В чём проблема?
Хочу нажать на x=123\y=123
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
Надо так писать.
C#:
instance.ActiveTab.Touch.Touch(123,123,3000);
ну или можете вначале объявить
C#:
var tab = instance.ActiveTab;
и тогда пользоваться tab ну как у вас в примере.

И вот это повторять не надо, это описание функции
public void Touch(
int x,
int y,
int pauseMs
);
И там еще написано что элемент должен быть в зоне видимости.
 
Последнее редактирование:

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113

Kinomanius

Активный пользователь
Регистрация
20.01.2020
Сообщения
184
Благодарностей
26
Баллы
28
Надо так писать.
C#:
instance.ActiveTab.Touch.Touch(123,123,3000);
ну или можете вначале объявить
C#:
var tab = instance.ActiveTab;
и тогда пользоваться tab ну как у вас в примере.

И вот это повторять не надо, это описание функции
public void Touch(
int x,
int y,
int pauseMs
);
И там еще написано что элемент должен быть в зоне видимости.
Пробовал оба... ошибку выдаёт, в чём проблема.

C#:
instance.ActiveTab.Touch.Touch(123,123,3000);
C#:
var tab = instance.ActiveTab;
instance.ActiveTab.Touch.Touch(123,123,3000);
 

Kinomanius

Активный пользователь
Регистрация
20.01.2020
Сообщения
184
Благодарностей
26
Баллы
28

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93

Kinomanius

Активный пользователь
Регистрация
20.01.2020
Сообщения
184
Благодарностей
26
Баллы
28

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93

Kinomanius

Активный пользователь
Регистрация
20.01.2020
Сообщения
184
Благодарностей
26
Баллы
28
Так точно!
Метод вроде как только для chrome
Можете скинуть шаблон с использованием этого Touch? Может там не только C# надо подключать а что ещё?
Я только генерирую мобильный бразуер и вставляю этот C# кубик с нажатием
C#:
instance.ActiveTab.Touch.Touch(123,123,500);
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93
Координаты точные задаете для тача? Объект клика должен быть в зоне видимости.
 

Вложения

Kinomanius

Активный пользователь
Регистрация
20.01.2020
Сообщения
184
Благодарностей
26
Баллы
28

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93

Kinomanius

Активный пользователь
Регистрация
20.01.2020
Сообщения
184
Благодарностей
26
Баллы
28

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93

Kinomanius

Активный пользователь
Регистрация
20.01.2020
Сообщения
184
Благодарностей
26
Баллы
28

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
  • Спасибо
Реакции: Kinomanius

Kinomanius

Активный пользователь
Регистрация
20.01.2020
Сообщения
184
Благодарностей
26
Баллы
28
Спасибо
 

Kinomanius

Активный пользователь
Регистрация
20.01.2020
Сообщения
184
Благодарностей
26
Баллы
28
в личном кабинете доступна. тач только на семерке есть. появился с 7.1.4.0. раньше его небыло
А есть там возможность нажать на координаты внутри искомого элемента?
Например я нашёл кнопку ( 100х150 ) и в кнопке нажимаю на координаты 20х30.
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
  • Спасибо
Реакции: JurgenZolle и Ilshakin

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
А есть там возможность нажать на координаты внутри искомого элемента?
Например я нашёл кнопку ( 100х150 ) и в кнопке нажимаю на координаты 20х30.
как выше написали, через сложнейшие формулы высчитываются координаты и делается тач по координатам, а не по элементу. еще надо убедиться что координаты в видимой области.
 

Oleg-KC

Client
Регистрация
17.02.2020
Сообщения
168
Благодарностей
56
Баллы
28
А есть там возможность нажать на координаты внутри искомого элемента?
Например я нашёл кнопку ( 100х150 ) и в кнопке нажимаю на координаты 20х30.
C#:
var tab = instance.ActiveTab;
var rnd = new Random();
HtmlElement el = tab.FindElementByAttribute("тэг", "имя атрибута", "значение", "regexp", 0); // ищем элемент
int elX = el.DisplacementInTabWindow.X; // находим "leftinbrowser"
int elY = el.DisplacementInTabWindow.Y; // находим "topinbrowser"
int elWidth = el.Width; // ширина элемента
int elHeight = el.Height; // высота элемента
int elCrdX = rnd.Next(elX, elX + elWidth); // вычисляем рандом координаты по Х в пределах элемента
int elCrdY = rnd.Next(elY, elY + elHeight); // вычесляем рандом координаты по У в пределах элемента
tab.Touch.Touch(elCrdX, elCrdY); // выполняем тач по коорд.
// если вам нужно чтобы область была сильно меньше чем сам элемент,
// в таком случае в rnd.Next(elX, elX + elWidth) плюсуйте к leftinbrowser - elX нужное кол-во пикселей
// например rnd.Next(elX + 50, elX + elWidth - 50) что по оси Х слева прибавит 50px а справа отнимет 50рх
// то же самое с осью У, но сильно не переусердствуйте, потому что если minValue будет больше maxValue вывалится ошибкой
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
C#:
var tab = instance.ActiveTab;
var rnd = new Random();
HtmlElement el = tab.FindElementByAttribute("тэг", "имя атрибута", "значение", "regexp", 0); // ищем элемент
int elX = el.DisplacementInTabWindow.X; // находим "leftinbrowser"
int elY = el.DisplacementInTabWindow.Y; // находим "topinbrowser"
int elWidth = el.Width; // ширина элемента
int elHeight = el.Height; // высота элемента
int elCrdX = rnd.Next(elX, elX + elWidth); // вычисляем рандом координаты по Х в пределах элемента
int elCrdY = rnd.Next(elY, elY + elHeight); // вычесляем рандом координаты по У в пределах элемента
tab.Touch.Touch(elCrdX, elCrdY); // выполняем тач по коорд.
// если вам нужно чтобы область была сильно меньше чем сам элемент,
// в таком случае в rnd.Next(elX, elX + elWidth) плюсуйте к leftinbrowser - elX нужное кол-во пикселей
// например rnd.Next(elX + 50, elX + elWidth - 50) что по оси Х слева прибавит 50px а справа отнимет 50рх
// то же самое с осью У, но сильно не переусердствуйте, потому что если minValue будет больше maxValue вывалится ошибкой
Норм аватарка *HAHA*
 

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