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

  • Автор темы Автор темы Kinomanius
  • Дата начала Дата начала

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); // Жмём по нему

Как можно переделать чтоб оно жмакало по координатам на экране, а не по какому то элементу ?
 
Нигде нет описания пока, попробуй в скобках координаты через запятую указать. Если не сработает, то лучше спросить в теме новости по версии.
 
  • Спасибо
Реакции: ALEXSANDR_RKKA
Я слабо разбираюсь, но мне кажется достаточно будет заменить FindElementByXPath на какую то функцию( если верно выразился ), которая отвечает не за поиск элемента, а за нажатие... например tab.Touch ( я просто не знаю как такая функция называется) и оно заработает?
 
Я слабо разбираюсь, но мне кажется достаточно будет заменить FindElementByXPath на какую то функцию( если верно выразился ), которая отвечает не за поиск элемента, а за нажатие... например tab.Touch ( я просто не знаю как такая функция называется) и оно заработает?
Код:
Развернуть Свернуть Копировать
public void Touch(
   int x,
   int y,
   int pauseMs
)
там перегрузка указана в чем проблема tab.Touch.Touch(1,3,3000)
 
Код:
Развернуть Свернуть Копировать
public void Touch(
   int x,
   int y,
   int pauseMs
    );
tab.Touch.Touch(123,123,3000);
В чём проблема?
Хочу нажать на x=123\y=123
 
Надо так писать.
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;
и тогда пользоваться 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);
 
Так точно!
Метод вроде как только для chrome
Можете скинуть шаблон с использованием этого Touch? Может там не только C# надо подключать а что ещё?
Я только генерирую мобильный бразуер и вставляю этот C# кубик с нажатием
C#:
Развернуть Свернуть Копировать
instance.ActiveTab.Touch.Touch(123,123,500);
 
Координаты точные задаете для тача? Объект клика должен быть в зоне видимости.
 

Вложения

  • Спасибо
Реакции: Kinomanius
Спасибо
 
в личном кабинете доступна. тач только на семерке есть. появился с 7.1.4.0. раньше его небыло
А есть там возможность нажать на координаты внутри искомого элемента?
Например я нашёл кнопку ( 100х150 ) и в кнопке нажимаю на координаты 20х30.
 
  • Спасибо
Реакции: JurgenZolle и Ilshakin
А есть там возможность нажать на координаты внутри искомого элемента?
Например я нашёл кнопку ( 100х150 ) и в кнопке нажимаю на координаты 20х30.
как выше написали, через сложнейшие формулы высчитываются координаты и делается тач по координатам, а не по элементу. еще надо убедиться что координаты в видимой области.
 
А есть там возможность нажать на координаты внутри искомого элемента?
Например я нашёл кнопку ( 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 вывалится ошибкой
 
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*
 

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