Как кликнуть на canvas картинку по координатам?

Nekro

Client
Регистрация
01.08.2020
Сообщения
232
Благодарностей
24
Баллы
18
Здравствуйте.

Есть динамическая картинка с одним и тем же размером на canvas, на сайте. Имеются нужные координаты, на которые нужно кликать (по размерам картинки, не экрана). Как мне кликнуть по координатам именно в области этой картинки canvas независимо от размера экрана (неизвестно какой точно будет размер экрана)?

Иначе говоря произвести клик по координатам в области элемента canvas.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
узнать координаты этой картинки в окне. Высчитать нужные координаты путём сложения вышеописанных и координат в самой картинке
 
  • Спасибо
Реакции: Nekro

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
С помощью экшена "Взять значение" можно получить значение top и left у картинки (это будет верхний левый угол изображения) и затем к этим значением добавлять расстояние от краёв картинки к нужной кнопке внутри.
 
  • Спасибо
Реакции: Nekro

Nekro

Client
Регистрация
01.08.2020
Сообщения
232
Благодарностей
24
Баллы
18
С помощью экшена "Взять значение" можно получить значение top и left у картинки (это будет верхний левый угол изображения) и затем к этим значением добавлять расстояние от краёв картинки к нужной кнопке внутри.
С координатам вроде разобрался. Установил фиксированный размер instance. Остаётся вопрос - как кликать то?

Попробовал вариант:
C#:
instance.Click(800, 850, 600, 610, "Left", "Random");
Он кликает в нужное место, но ничего не происходит. Клик идёт по элементу canvas. Если руками кликать, то всё нормально работает. Touch не хочу использовать, потому что клик нужен быстрый + там бывают проблемы со скроллом к нужному месту.
 

Nekro

Client
Регистрация
01.08.2020
Сообщения
232
Благодарностей
24
Баллы
18
Сам спросил - сам ответил. Эмуляция мыши так же не сработала, а вот если поставить равномерное распределение, то клик проходит.
 

Nekro

Client
Регистрация
01.08.2020
Сообщения
232
Благодарностей
24
Баллы
18
Что-то странное происходит. Почему-то на первую кнопку кликает нормально, на вторую никак не хочет нажимать. Точнее клик то происходит, но canvas никак не реагирует на него. Код идентичный, только разные координаты. В чём может быть причина? Canvas 1 цельный если что.


C#:
instance.ActiveTab.MouseMove(800, 600);
instance.ActiveTab.MouseClick(800, 600, "left", "click");

instance.ActiveTab.MouseMove(955, 600);
instance.ActiveTab.MouseClick(955, 600, "left", "click");
85992


Пробовал разные координаты ставить. Не помогает. Остальные тоже не хочет нажимать. Только первую. Руками всё прожимается нормально.
 
Последнее редактирование:

Phoenix78

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

Nekro

Client
Регистрация
01.08.2020
Сообщения
232
Благодарностей
24
Баллы
18
так пробни
C#:
instance.ActiveTab.FullEmulationMouseMove(955,600);
instance.ActiveTab.FullEmulationMouseClick("left","click");
Не робит. Первую кнопку жмёт всегда нормально, а все остальные не хочет. Пробовал разные последовательности даже.

Ещё заметил, то при клике по координатам на последнюю кнопку (на скриншоте цифра 9) - закрывает popup. Эта форма в popup находится.


Может какое-то влияние оказывает то, что я выставил принудительно такой размер инстанса?
C#:
instance.SetWindowSize(1920,1080);
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
ну тут надо начинать с базы. какая версия зенки, какой движок, какой профиль, десктоп/мобила... есть баг в зенке с кривыми координатами, но не помню в каком случае проявляется.
 
  • Спасибо
Реакции: Nekro

Nekro

Client
Регистрация
01.08.2020
Сообщения
232
Благодарностей
24
Баллы
18
ну тут надо начинать с базы. какая версия зенки, какой движок, какой профиль, десктоп/мобила... есть баг в зенке с кривыми координатами, но не помню в каком случае проявляется.
7.2.1.1 Firefox52x64 десктоп. Профиль рандомный
85994


Просто я не понимаю. Если бы проблема в координатах была, то он бы не смог мне нажимать первую кнопку. Он же не может багануть, показывать у первой кнопки правильные координаты и правильный клик, а в дальнейших случаях показывать только правильные координаты, но клик где-нибудь криво происходить.

Вот ещё эмуляция мыши не работает по тем же координатам. Даже на первой кнопке. Ничего не понимаю.
85995
85996


Клик как бы проходит - реакции 0. Может можно как то задержку клика выставит 0.05sec, например? После наведения.


Попробовал координаты 801 на первой кнопке. Работает. 810 - работает. 840 - не работает, хотя клик идёт прям в центр кнопки.

Попробовал так. Тоже не работает:

C#:
// create points
Point[] points = new Point[1]
{
    new Point(920, 600)
};
 
// create delay
int[] delay = new int[1] { 1000 };
 
// perform the mouve move events
instance.ActiveTab.MouseMove(points, delay, false);
instance.ActiveTab.MouseMove(920, 600);
instance.ActiveTab.MouseClick(920, 600, "left", "click");
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
ну 7.2 довольно старая версия. да еще и движок лисы. там скрипты сайта могут не правильно отрабатывать или движок неправильно работать.
надо проверять на последней версии зенки и на хроме.
 
  • Спасибо
Реакции: djaga и Nekro

Nekro

Client
Регистрация
01.08.2020
Сообщения
232
Благодарностей
24
Баллы
18
ну 7.2 довольно старая версия. да еще и движок лисы. там скрипты сайта могут не правильно отрабатывать или движок неправильно работать.
надо проверять на последней версии зенки и на хроме.
Поменял на хром - заработало. Правда теперь все координаты менять надо. Но ничего страшного. Спасибо за наводку. Буду дальше разбираться.
 

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