MouseMove,Click

zombie

Client
Регистрация
14.08.2012
Сообщения
480
Благодарностей
118
Баллы
43
Доброго времени!

Вопрос по методу MouseMove(x1,y1,x2,y2,true) - т.е. интересует последующий клик после движения.
Стартовое значение (x1 и y1) не важно, проблема в конечном значении. Беру последнее с помощью leftinbrowser и topinbrowser тег a (не с нулевой шириной\длинной, проверено).

1. Если начальная позиция сверху и конечная позиция сверху (без прокрутки страницы) то клик происходит нормально (переход куда нужно и т.д.).

2. Если начальная позиция сверху, в конечгая ниже (принудительная прокрутка страницы этим методом) то клик либо не происходит либо мимо (что скорее всего).

Из этого я предполагаю, что когда происходит конечное движение мыши перед кликом, страница проматывается и он просто кликает мимо. Для примера: есть старт (x1 = 50,y1 = 50) и финиш (x2 = 50,y = 1500). Т.е. высота берёться 1500, но при этом страница проматывается...

Вообщем чёрт знает что, я уже может торможу, но визуально при всём при этом курсов движения\клика стоит где нужно, но не кликает (это в том случае если элемент ниже видимой части). Как с этим поступить?

Я так понимаю, что при клике нужно отталкиваться от top и left, а не leftinbrowser и topinbrowser, но тогда смысл в принудительной перемотке.

Сумбурно вышло, но как-то так :-)

P.S. Позавчера обновился, может есть чего-нового, что не знаю ещё.
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 708
Баллы
113
В общем если элемент не виден на странице, этот экшен не работает правильно.
В следующем билде будет новый метод scroll to element.
 
  • Спасибо
Реакции: zombie и Lexicon

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
894
Баллы
113
В общем если элемент не виден на странице, этот экшен не работает правильно.
В следующем билде будет новый метод scroll to element.
мимимимими))))

А если по теме - то в вашем случае придется сначала делать focus на том элементе, что будете кликать, а потом уже брать topinbrowser и leftinbrowser и должно быть все ок
 

botovod

Client
Регистрация
04.04.2014
Сообщения
170
Благодарностей
126
Баллы
43
Да, есть такая беда. Лично я выхожу из ситуации следующим образом: разворачиваю окно инстанса на столько, сколько нужно для отображения всей страницы или формы. Не всегда конечно получится этим воспользоваться, но все же для регистрационных форм вполне хватает.
C#
instance.SetWindowSize(1050,1200);
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 708
Баллы
113
focus в коде тоже не скроллит. сам страдал, но ребята поправили уже. в следующем билде будет счастье)
 

zombie

Client
Регистрация
14.08.2012
Сообщения
480
Благодарностей
118
Баллы
43
Пока придумал просто отдельный клик. Т.е. метод MouseMove скролит (без клика), MouseClick уже кликает :-)
 

zombie

Client
Регистрация
14.08.2012
Сообщения
480
Благодарностей
118
Баллы
43
Сейчас на двух других сайтах метод MouseMove уже не скроллит до конечной точки, а мне нужно бывает провести мышь с верхней части до середины или донизу.
Можно клавиатурой, но вся соль именно в эмуляции. При том я точно не знаю как работает на деле сей метод, чтобы не получилось что мышка скролит кусками - промотал, прокрутил и т.д.

А вообще, с чем может быть связано отсутствие скролла?
Т.е. на одном сайте всё нормально, а на двух других никак метод не прокручивает до конечной точки, если она не в переделах экрана.
 

shade

Client
Регистрация
19.11.2010
Сообщения
580
Благодарностей
346
Баллы
63
Т.е. скролл всё таки происходит, но не до конца? А может есть динамическая загрузка страници и она просто не успевает догрузиться к моменту MouseMove.
 

zombie

Client
Регистрация
14.08.2012
Сообщения
480
Благодарностей
118
Баллы
43
Скролла совсем нет. По статуса ПМ прогрузки тоже никакой нет и не бывает.
Как пример, если указать для метода mousemove x1 = 5, y1 = 5, x2 = 5 , y2 = 1000 , то по идеи просто должно проскролиться ~ на 1к пикселей вниз + если мы находимся на данный момент посередине, прокручивалось до начальной точки, а потом до конечной. Потом по моему замыслу кликалось по конечным координатам (уже через MouseClick). Сейчас же вообще ничего не двигается. Если конечная координата невидна, то и клик не срабатывает.

Не могу понять закономерности. Перенёс тот же скрипт на другой сайт (только параметры поиска элементов поменял) и вообще никакой реакции.
 

zombie

Client
Регистрация
14.08.2012
Сообщения
480
Благодарностей
118
Баллы
43
Проверил ещё на паре сайтов - всё нормально. Что с этими не могу понять.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 708
Баллы
113
Приложите пример, пожалуйста. Передам программистам.
 

zombie

Client
Регистрация
14.08.2012
Сообщения
480
Благодарностей
118
Баллы
43

zombie

Client
Регистрация
14.08.2012
Сообщения
480
Благодарностей
118
Баллы
43
Кстати, придумал вот такой скролл. Фокус не нужен, без клавиатуры. Может кому будет полезно.

int y = 0;
for (int i = 0; i < 50; i ++){
instance.ActiveTab.MainDocument.EvaluateScript("javascript:window.scrollTo(0," + y + ");");
System.Threading.Thread.Sleep(10);
y += 10;
}
 
  • Спасибо
Реакции: Lexicon

zombie

Client
Регистрация
14.08.2012
Сообщения
480
Благодарностей
118
Баллы
43
В общем если элемент не виден на странице, этот экшен не работает правильно.
В следующем билде будет новый метод scroll to element.
Я вам присылал 3 сайта в личку, и также как с фокусом при движении не срабатывает скролл (выше написанный). Вернее то срабатывает, то не срабатывает. В общем уже нашёл 2 различия/проблемы в работе с этими сайтами и, кажется мне, что всё таки есть какая то особенность у 2х других сайтов.

что касается 1 из "рабочих" сайтов, то там всё работает на ура и даже если какой либо элемент не виден, он нормально скроллит при методе MouseMove и всё нормально с вышестоящим скроллом.

Ещё по-поводу 2х "нерабочих сайтов": у каждого из них по несколько <body>. Может тут что-то...

UPD: склоняюсь к тому что вся беда из-за нескольких документов. Я явно работаю просто не в том документе - из-за этого, уверен, все проблемы.
 
Последнее редактирование:

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