MouseMove,Click

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

zombie

Client
Регистрация
14.08.2012
Сообщения
484
Реакции
122
Баллы
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. Позавчера обновился, может есть чего-нового, что не знаю ещё.
 
Последнее редактирование:
В общем если элемент не виден на странице, этот экшен не работает правильно.
В следующем билде будет новый метод scroll to element.
 
  • Спасибо
Реакции: zombie и Lexicon
В общем если элемент не виден на странице, этот экшен не работает правильно.
В следующем билде будет новый метод scroll to element.
мимимимими))))

А если по теме - то в вашем случае придется сначала делать focus на том элементе, что будете кликать, а потом уже брать topinbrowser и leftinbrowser и должно быть все ок
 
Да, есть такая беда. Лично я выхожу из ситуации следующим образом: разворачиваю окно инстанса на столько, сколько нужно для отображения всей страницы или формы. Не всегда конечно получится этим воспользоваться, но все же для регистрационных форм вполне хватает.
C#
instance.SetWindowSize(1050,1200);
 
focus в коде тоже не скроллит. сам страдал, но ребята поправили уже. в следующем билде будет счастье)
 
Сейчас на двух других сайтах метод MouseMove уже не скроллит до конечной точки, а мне нужно бывает провести мышь с верхней части до середины или донизу.
Можно клавиатурой, но вся соль именно в эмуляции. При том я точно не знаю как работает на деле сей метод, чтобы не получилось что мышка скролит кусками - промотал, прокрутил и т.д.

А вообще, с чем может быть связано отсутствие скролла?
Т.е. на одном сайте всё нормально, а на двух других никак метод не прокручивает до конечной точки, если она не в переделах экрана.
 
Т.е. скролл всё таки происходит, но не до конца? А может есть динамическая загрузка страници и она просто не успевает догрузиться к моменту MouseMove.
 
Скролла совсем нет. По статуса ПМ прогрузки тоже никакой нет и не бывает.
Как пример, если указать для метода mousemove x1 = 5, y1 = 5, x2 = 5 , y2 = 1000 , то по идеи просто должно проскролиться ~ на 1к пикселей вниз + если мы находимся на данный момент посередине, прокручивалось до начальной точки, а потом до конечной. Потом по моему замыслу кликалось по конечным координатам (уже через MouseClick). Сейчас же вообще ничего не двигается. Если конечная координата невидна, то и клик не срабатывает.

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

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
В общем если элемент не виден на странице, этот экшен не работает правильно.
В следующем билде будет новый метод scroll to element.

Я вам присылал 3 сайта в личку, и также как с фокусом при движении не срабатывает скролл (выше написанный). Вернее то срабатывает, то не срабатывает. В общем уже нашёл 2 различия/проблемы в работе с этими сайтами и, кажется мне, что всё таки есть какая то особенность у 2х других сайтов.

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

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

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

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