Реализация TOUCH (TO SCREEN)
Реализация TOUCH (TO SCREEN)
Господа. Окей, у нас бразуер на хромиуме. Мы имитируем какой-то мобильный браузер (андроидовский Mobile chrome или Mobile Safari).
Но, в этом случае, браузер должен реагировать иначе. Мышки - нет, hover события - нет, скролл-бара - нет. Как имитировать скролл пальцем? — непонятно. Если эмулировать ЛКМ, потом тянуть с зажатым ЛКМ вверх/вниз — браузер это воспринимает как выделение текста, а не скроллинг как на мобильном устройстве.
Есть у кого идеи (костыля, или может нет)?
Но, в этом случае, браузер должен реагировать иначе. Мышки - нет, hover события - нет, скролл-бара - нет. Как имитировать скролл пальцем? — непонятно. Если эмулировать ЛКМ, потом тянуть с зажатым ЛКМ вверх/вниз — браузер это воспринимает как выделение текста, а не скроллинг как на мобильном устройстве.
Есть у кого идеи (костыля, или может нет)?
Re: Реализация TOUCH (TO SCREEN)
скоро - сделаем
Вот будет такая функция - через которую можно будет все touch комбинации сделать :
+ настройка поддержки Touch событий
ориентировочно к концу недели.
Вот будет такая функция - через которую можно будет все touch комбинации сделать :
mouse->send_touch(int id, int touch_type, int x, int y, int radiusX = 0, int radiusY = 0, float rotationAngle = 0, float pressure = 0, int modiefiers = 0, int pointerType = 0)
+ настройка поддержки Touch событий
ориентировочно к концу недели.
Re: Реализация TOUCH (TO SCREEN)
сделано:
id : идентификатор касания - одновременно можно 16 пальцев задавать (0 .. 15)
touch_type : тип касания (Released = 0, Pressed = 1, Moved = 2, Cancelled = 3)
x : x - координата касания
y : y - координата касания
radiusX : радиус касания по X (в пискселях)
radiusY : радиус касания по Y (в пискселях)
rotationAngle : угол поворота (в радианах)
pressure : давление (от 0 до 1)
modiefiers : модификаторы клавиатуры ( None = 0, CapsLockOn = 1, ShiftDown = 2, ControlDown = 4, AltDown = 8, LeftMouseButton = 16, MiddleMouseButton = 32, RightMouseButton = 64,)
pointerType: тип устройства( Touch = 0, Mouse = 1, Pen = 2, Eraser = 3 )
mouse->send_touch(int id, int touch_type, int x, int y, int radiusX = 0, int radiusY = 0, float rotationAngle = 0, float pressure = 0, int modiefiers = 0, int pointerType = 0)
id : идентификатор касания - одновременно можно 16 пальцев задавать (0 .. 15)
touch_type : тип касания (Released = 0, Pressed = 1, Moved = 2, Cancelled = 3)
x : x - координата касания
y : y - координата касания
radiusX : радиус касания по X (в пискселях)
radiusY : радиус касания по Y (в пискселях)
rotationAngle : угол поворота (в радианах)
pressure : давление (от 0 до 1)
modiefiers : модификаторы клавиатуры ( None = 0, CapsLockOn = 1, ShiftDown = 2, ControlDown = 4, AltDown = 8, LeftMouseButton = 16, MiddleMouseButton = 32, RightMouseButton = 64,)
pointerType: тип устройства( Touch = 0, Mouse = 1, Pen = 2, Eraser = 3 )
Re: Реализация TOUCH (TO SCREEN)
Спасибо, будем пробовать, отпишусь
-
- Сообщения: 5
- Зарегистрирован: 06 май 2019, 16:57
Re: Реализация TOUCH (TO SCREEN)
Попробовали $mouse->send_touch
для теста взяли сайт гугла и пытались нажать на кнопку "Поиск в Google"
но ни одного удачного касания на клик, так и не произошло
пробовали вот так
$el = $button->get_by_name("btnK");
var_dump($mouse->send_touch(1, 0, rand($el->get_x(), $el->get_width()), rand($el->get_y(), $el->get_height()), rand(5, 10), rand(10, 20), 15, rand(0.3, 0.9), 0, 0));
Пытались перебрать разные значения touch_type и modiefiers, но это не помогло, ходя в каких то случаях на кнопке было видно событие hover, без итогового нажатия на копку, при этом var_dump всегда выдает true
Подскажите пожалуйста, что мы делаем не так и желательно добавить send_touch в мануал с подробным описанием, как эмулировать касание на клик, скролить экран и т.д.
Так же было бы хорошо добавить этот метод в классы DOM (button, div и прочие), чтоб можно было кликать по этим элементам без доп вычислений
для теста взяли сайт гугла и пытались нажать на кнопку "Поиск в Google"
но ни одного удачного касания на клик, так и не произошло
пробовали вот так
$el = $button->get_by_name("btnK");
var_dump($mouse->send_touch(1, 0, rand($el->get_x(), $el->get_width()), rand($el->get_y(), $el->get_height()), rand(5, 10), rand(10, 20), 15, rand(0.3, 0.9), 0, 0));
Пытались перебрать разные значения touch_type и modiefiers, но это не помогло, ходя в каких то случаях на кнопке было видно событие hover, без итогового нажатия на копку, при этом var_dump всегда выдает true
Подскажите пожалуйста, что мы делаем не так и желательно добавить send_touch в мануал с подробным описанием, как эмулировать касание на клик, скролить экран и т.д.
Так же было бы хорошо добавить этот метод в классы DOM (button, div и прочие), чтоб можно было кликать по этим элементам без доп вычислений
Re: Реализация TOUCH (TO SCREEN)
спасибо, посмотрим
Re: Реализация TOUCH (TO SCREEN)
есть какие-то новости по этой теме?
примеры как использовать (в помощи очень скудная информация)?
спасибо!
примеры как использовать (в помощи очень скудная информация)?
спасибо!
Re: Реализация TOUCH (TO SCREEN)
Да, все работает:
// 1 echo "1. Перейдем на yahoo : "; echo $browser->navigate("http://www.yahoo.ru")."<br>"; // 2 echo "2. Коснемся в точке 500,500 : "; echo $mouse->move(500,500)." "; echo $mouse->send_touch(0,1,500,500)." "; echo $mouse->send_touch(0,0,500,500)."\n";движение пальцем по экрану
// 1 echo "1. Перейдем в yahoo : "; echo $browser->navigate("https://yahoo.com")."<br>"; // пауза sleep(2); // 2 echo "2. Перейдем к точке 100,100 по линии за 1000 мс: "; echo $mouse->send_touch_to(100,400,100,100,"line",1000)."\n";
Re: Реализация TOUCH (TO SCREEN)
в помощи совсем нет ифнормации про send_touch_to...
Re: Реализация TOUCH (TO SCREEN)
в продолжение темы:
как отскролить страницу в обратную сторону(знак - не помогает)?
а как отправить сразу 2 и более касаний?
или например сделать zoom?
как отскролить страницу в обратную сторону(знак - не помогает)?
а как отправить сразу 2 и более касаний?
или например сделать zoom?
Последний раз редактировалось wal 18 ноя 2019, 11:25, всего редактировалось 1 раз.
Re: Реализация TOUCH (TO SCREEN)
http://humanemulator.net/objects/SYSTEM ... _touch.php
Первый параметр это идентификатор пальца от 0 до 16:
echo $mouse->send_touch(0,1,500,500); echo $mouse->send_touch(1,1,550,550); echo $mouse->send_touch(1,0,550,550); echo $mouse->send_touch(0,0,500,500);т.е вот код касания двумя пальцами и отпусканием в одной точке, если перед отпусканием менять координату , передавая $touch_type=2 для соответствующего пальца - то будет масштабирование или другое действие.
Re: Реализация TOUCH (TO SCREEN)
а как отскролить страницу в обратную сторону(знак - не помогает)?
Re: Реализация TOUCH (TO SCREEN)
По send_touch - вот пока пример:
// 1 echo "1. Перейдем в yahoo : "; echo $browser->navigate("https://yahoo.com")."<br>"; // пауза sleep(2); // 2 echo "2. Перейдем к точке 100,100 по линии за 1000 мс: "; echo $mouse->send_touch_to(100,400,100,100,"line",1000)."\n";параметры аналогичны send_move_to, чуть позже обновим справку.