В метод FullEmulationMouseCurrentPosition добавить относительные координаты

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
На текущий момент через FullEmulationMouseCurrentPosition можно узнать X и Y в абсолютных координатах страницы и при переходе на другую страницу они сохраняются, хотя документ уже другой. и при вызове FullEmulationMouse страница начинает скролиться. А логически движение мышки должно начинаться с относительных координат экрана, без всяких скролов. сейчас это можно сделать ручным пересчетом координат, до перехода на новую страницу , отняв int.Parse(instance.ActiveTab.MainDocument.EvaluateScript("return window.pageYOffset;"));

Вот я и подумал, ведь ничего не мешает в FullEmulationMouseCurrentPosition добавить еще один параметр Y_screen , и при каждом вызове методов FullEmulationMouse пересчитывать его относительно экрана. и в вызове FullEmulationMouse сделать bool входной элемент указывающий с какой координаты начинать движение. хотя чисто логически мышь же не может выйти за экран, поэтому правильней всего работать в экранных координатах всегда.
подробно о проблеме с примерами и решением можно ознакомиться в этой теме. https://zennolab.com/discussion/threads/i-snova-mysh.70633/
там есть шаблон как сейчас работает мышь. и прикрепил шаблон как она логически правильно должна работать.

PS. Можете и не делать, я для себя щас в общем коде переопределю себе функцию и все будет как я описал :-) но вот для других юзеров можете сделать :-)
 

Вложения

Valandersi

Client
Регистрация
19.01.2015
Сообщения
1 871
Благодарностей
1 117
Баллы
113
Подкинул голосец, актуально
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
На текущий момент через FullEmulationMouseCurrentPosition можно узнать X и Y в абсолютных координатах страницы и при переходе на другую страницу они сохраняются, хотя документ уже другой. и при вызове FullEmulationMouse страница начинает скролиться. А логически движение мышки должно начинаться с относительных координат экрана, без всяких скролов. сейчас это можно сделать ручным пересчетом координат, до перехода на новую страницу , отняв int.Parse(instance.ActiveTab.MainDocument.EvaluateScript("return window.pageYOffset;"));
Похоже на серьёзный недочёт. Ранее сообщали?
 

Phoenix78

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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
Вот я и подумал, ведь ничего не мешает в FullEmulationMouseCurrentPosition добавить еще один параметр Y_screen , и при каждом вызове методов FullEmulationMouse пересчитывать его относительно экрана. и в вызове FullEmulationMouse сделать bool входной элемент указывающий с какой координаты начинать движение. хотя чисто логически мышь же не может выйти за экран, поэтому правильней всего работать в экранных координатах всегда.
Ужс, постарайся излагать мысли не кучей текста. :bw::-)

Передал разработчикам.
 

Phoenix78

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

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
я себе модифицировал код с полной эмуляцией мышки. эмуляция оказывается может работать идеально, не перепрыгивать с элемента на элемент и мышка может выглядеть как настоящая.
вот так на самом деле мыша должна двигаться, а не мотаться вверх вниз как заведенная.
 
  • Спасибо
Реакции: djaga, Dr.Pipetka и ZSharp

ZSharp

Client
Регистрация
29.09.2013
Сообщения
387
Благодарностей
121
Баллы
43
я себе модифицировал код с полной эмуляцией мышки. эмуляция оказывается может работать идеально, не перепрыгивать с элемента на элемент и мышка может выглядеть как настоящая.
вот так на самом деле мыша должна двигаться, а не мотаться вверх вниз как заведенная.
Движения мыши действительно человечные. Вот бы код дали посмотреть.
Или этот код не для распространения?
 
  • Спасибо
Реакции: andrey-ka

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 236
Благодарностей
804
Баллы
113
я себе модифицировал код с полной эмуляцией мышки. эмуляция оказывается может работать идеально, не перепрыгивать с элемента на элемент и мышка может выглядеть как настоящая.
вот так на самом деле мыша должна двигаться, а не мотаться вверх вниз как заведенная.
Поделись кодом плиз:-)
 

Phoenix78

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

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 236
Благодарностей
804
Баллы
113
вот же выкладывал решение , что бы крыса не моталась. но лучше подождать. говорят в 5.42 все починили.
Я не про то:-) Просто по видосу показалось что мышь двигается более человечно чем стандартными методами.
Подумал что у тебя свой расчет траекторий)) Видимо ошибся.
 

DocSpoc

Client
Регистрация
04.01.2016
Сообщения
272
Благодарностей
143
Баллы
43
Такое впечатление, что в 5.42 стало еще хуже(
Количество зависов и ошибок мыши по субъективным оценкам стало больше.
Вот на таком простом коде регулярно ловлю проблемы
C#:
string curl = project.Variables["curUrl"].Value;
HtmlElementCollection hes = instance.ActiveTab.GetDocumentByAddress("0").FindElementsByAttribute("a","href",curl,"regexp");
HtmlElement he;
int url = rnd.Next(0, hes.Count);//выбираем совпадение элемента рандомно
he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("a","href",curl,"regexp", url);//берем элемент
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);//наводим мышь на элемент
instance.ActiveTab.FullEmulationMouseClick("left", "click");//нажимает левой кнопкой мыши на элемент
Браузер Хром. Код выполнялся на сайте https://ertelecom.ru/ что привело к результату:
https://radikal.ru/video/xduFky4KesQ
Это в PM. Пришлось стопорнуть кубик. А так минут 5 крутил туда-сюда...

Или может быть в коде косяк?

Решил пока что откатиться на 5.41((
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
Такое впечатление, что в 5.42 стало еще хуже(
Количество зависов и ошибок мыши по субъективным оценкам стало больше.
Вот на таком простом коде регулярно ловлю проблемы
C#:
string curl = project.Variables["curUrl"].Value;
HtmlElementCollection hes = instance.ActiveTab.GetDocumentByAddress("0").FindElementsByAttribute("a","href",curl,"regexp");
HtmlElement he;
int url = rnd.Next(0, hes.Count);//выбираем совпадение элемента рандомно
he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("a","href",curl,"regexp", url);//берем элемент
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);//наводим мышь на элемент
instance.ActiveTab.FullEmulationMouseClick("left", "click");//нажимает левой кнопкой мыши на элемент
Браузер Хром. Код выполнялся на сайте https://ertelecom.ru/ что привело к результату:
https://radikal.ru/video/xduFky4KesQ
Это в PM. Пришлось стопорнуть кубик. А так минут 5 крутил туда-сюда...

Или может быть в коде косяк?

Решил пока что откатиться на 5.41((
код не рабочий. с rnd понятно что делать, а вот что пихать в curl хрен знает.
Вам разработчики так и напишут , не воспроизводиться.
 

DocSpoc

Client
Регистрация
04.01.2016
Сообщения
272
Благодарностей
143
Баллы
43
В curl лежит домен сайта. В данном случае было ertelecom.ru
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
ну значит не поправили этот баг.
я вообще валяюсь с программера, который этот метод движения мышки и скрола кодит. там всего навсего надо работать в экранных координатах. Сразу уйдут все проблемы с крысой.
Не понимаю какие сложности высчитать координаты видимой области относительно страницы ? Получаешь координаты элемента , переводишь в экранные, высчитываешь разницу принимаешь решение о скролинге.
а щас какой то бред происходит. нижний футер прикреплен в низу , всегда виден , по экранным координатам он вот в пределах доступности , а в абсолютных страницы конечно до него 6000 пикселей, вот зенно крыса и погнала вниз. а еще видел сайт где верхний футер запихали в подвал, ну дизайнер же художник, он так видит :-) а зенно крыса видит что до него 4000 вниз и начинает скролить вниз и доскролив до низа кликает в верхнее закрепленное меню :-) ужас.
 

ZSharp

Client
Регистрация
29.09.2013
Сообщения
387
Благодарностей
121
Баллы
43
Тоже пробую мышь на новой версии и не вижу изменений. Ну по крайней мере в лучшую сторону
 

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