Координаты элемента

Если вы обнаружили какие либо ошибки, недочеты и неудобства или другие незачеты в программе напишите нам об этом на этом форуме - мы бум исправлять
Ответить
Аватара пользователя
k907
Сообщения: 322
Зарегистрирован: 21 май 2014, 20:32

Координаты элемента

Сообщение k907 » 25 мар 2020, 01:51

Координаты элемента в браузере отличаются от координат в подвале программы
$browser->navigate("http://humanemulator.net/objects/SYSTEM/mouse.php");
$browser->wait_for(60,1);

$x = $anchor->get_x_by_inner_text("click", true);
$y = $anchor->get_y_by_inner_text("click", true);

echo " $x | $y <br>";
$mouse->move($x,$y);
http://prntscr.com/rm6li9
Разработка решений для автоматизации вашего бизнеса. Telegram: https://t.me/k90_7

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Координаты элемента

Сообщение bigfozzy » 25 мар 2020, 15:13

В подвале отображаются координаты без учета скрола.

Т.е координаты не элемента, а только мышки в браузере.

Аватара пользователя
k907
Сообщения: 322
Зарегистрирован: 21 май 2014, 20:32

Re: Координаты элемента

Сообщение k907 » 26 мар 2020, 12:25

Т.е координаты не элемента, а только мышки в браузере.
Курсор мыши перемещается в координаты 270 / 593, но программа показывает 341 / 743
Скрол сейчас не используется.

Другой пример:
//поле перемещения виртуального курсора в 0,0 программа показывает координаты Xv = 2 / Yv = 2
$mouse->send_move(0,0);

//поле перемещения виртуального курсора в 12,10 программа показывает координаты Xv = 14 / Yv = 12
$mouse->send_move(12,10);

//поле перемещения реального курсора в 0,0 программа показывает координаты X = 3 / Y = 2
$mouse->move(0,0);

//поле перемещения реального курсора в 12,10 программа показывает координаты X = 19 / Y = 15
$mouse->move(12,10);
os - win 7
изменен масштаб - http://prntscr.com/rn1o08
Разработка решений для автоматизации вашего бизнеса. Telegram: https://t.me/k90_7

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Координаты элемента

Сообщение bigfozzy » 26 мар 2020, 18:54

Добавили настройку - автокоррекция мыши - если ее отключить мышь будет точно наводится по координатам но может не попасть в кликабельную область объекта (по умолчанию есть смещение 2,2)

Аватара пользователя
k907
Сообщения: 322
Зарегистрирован: 21 май 2014, 20:32

Re: Координаты элемента

Сообщение k907 » 01 апр 2020, 13:56

bigfozzy писал(а):
26 мар 2020, 18:54
Добавили настройку - автокоррекция мыши - если ее отключить мышь будет точно наводится по координатам но может не попасть в кликабельную область объекта (по умолчанию есть смещение 2,2)
В версии 7.0.45 проблема с координатами не решена.
Чем дальше перемещается мышь от угла браузера, тем больше погрешность между ожидаемыми и фактическими координатами.
Проблема только в режиме полной эмуляции.
Методы интерфейсов mouse_... тоже проверьте, пожалуйста
$full_emul = 1;
for($i=0;$i<=10;$i++)
{
    $x = $i*$i;
    $y = $i*$i;

    echo "Переместить мышь в координаты: x = $x | y = $y <br>";

    if ($full_emul) {
		$mouse->move($x,$y); 
		$x_real = $mouse->get_x(true);
		$y_real = $mouse->get_y(true);
    } else {
		$mouse->send_move($x,$y); 
		$x_real = $mouse->get_x(true, $virtual=true );
		$y_real = $mouse->get_y(true, $virtual=true );
    }

	echo "Координаты после перемещения: x = $x_real | y = $x_real  <br>"; 
	echo "Разность между ожидаемыми и реальными координатами: x = ".($x_real - $x)."  | y = ".($y_real - $y)."  <br>"; 
    echo "---------------------------------------- <br><br>";
}
Результат с включенной настройкой "Автокоррекция мышки"
Переместим мышь в коордианты: x = 0 | y = 0
Координаты после перемещения: x = 0 | y = 0
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Переместим мышь в коордианты: x = 1 | y = 1
Координаты после перемещения: x = 1 | y = 1
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Переместим мышь в коордианты: x = 4 | y = 4
Координаты после перемещения: x = 5 | y = 5
Разность между ожидаемыми и реальными координатами: x = 1 | y = 1
----------------------------------------

Переместим мышь в коордианты: x = 9 | y = 9
Координаты после перемещения: x = 11 | y = 11
Разность между ожидаемыми и реальными координатами: x = 2 | y = 2
----------------------------------------

Переместим мышь в коордианты: x = 16 | y = 16
Координаты после перемещения: x = 20 | y = 20
Разность между ожидаемыми и реальными координатами: x = 4 | y = 4
----------------------------------------

Переместим мышь в коордианты: x = 25 | y = 25
Координаты после перемещения: x = 31 | y = 31
Разность между ожидаемыми и реальными координатами: x = 6 | y = 6
----------------------------------------

Переместим мышь в коордианты: x = 36 | y = 36
Координаты после перемещения: x = 45 | y = 45
Разность между ожидаемыми и реальными координатами: x = 9 | y = 9
----------------------------------------

Переместим мышь в коордианты: x = 49 | y = 49
Координаты после перемещения: x = 61 | y = 61
Разность между ожидаемыми и реальными координатами: x = 12 | y = 12
----------------------------------------

Переместим мышь в коордианты: x = 64 | y = 64
Координаты после перемещения: x = 80 | y = 80
Разность между ожидаемыми и реальными координатами: x = 16 | y = 16
----------------------------------------

Переместим мышь в коордианты: x = 81 | y = 81
Координаты после перемещения: x = 101 | y = 101
Разность между ожидаемыми и реальными координатами: x = 20 | y = 20
----------------------------------------

Переместим мышь в коордианты: x = 100 | y = 100
Координаты после перемещения: x = 125 | y = 125
Разность между ожидаемыми и реальными координатами: x = 25 | y = 25
----------------------------------------
С выключенной настройкой "Автокоррекция мышки" дельта в координатах отличается на 2 пикселя.
Разработка решений для автоматизации вашего бизнеса. Telegram: https://t.me/k90_7

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Координаты элемента

Сообщение bigfozzy » 02 апр 2020, 19:26

При 125% десктопа - это и есть то расхождение.
Это сделано для тех кто работает с координатами элементов, чтобы не делать перерасчет.

Можем добавить настройку ignore_scale_factor ?

При 100%:
Переместить мышь в координаты: x = 0 | y = 0
Координаты после перемещения: x = 0 | y = 0
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Переместить мышь в координаты: x = 1 | y = 1
Координаты после перемещения: x = 1 | y = 1
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Переместить мышь в координаты: x = 4 | y = 4
Координаты после перемещения: x = 4 | y = 4
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Переместить мышь в координаты: x = 9 | y = 9
Координаты после перемещения: x = 9 | y = 9
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Переместить мышь в координаты: x = 16 | y = 16
Координаты после перемещения: x = 16 | y = 16
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Переместить мышь в координаты: x = 25 | y = 25
Координаты после перемещения: x = 25 | y = 25
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Переместить мышь в координаты: x = 36 | y = 36
Координаты после перемещения: x = 36 | y = 36
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Переместить мышь в координаты: x = 49 | y = 49
Координаты после перемещения: x = 49 | y = 49
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Переместить мышь в координаты: x = 64 | y = 64
Координаты после перемещения: x = 64 | y = 64
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Переместить мышь в координаты: x = 81 | y = 81
Координаты после перемещения: x = 81 | y = 81
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Переместить мышь в координаты: x = 100 | y = 100
Координаты после перемещения: x = 100 | y = 100
Разность между ожидаемыми и реальными координатами: x = 0 | y = 0
----------------------------------------

Аватара пользователя
k907
Сообщения: 322
Зарегистрирован: 21 май 2014, 20:32

Re: Координаты элемента

Сообщение k907 » 02 апр 2020, 19:40

bigfozzy писал(а):
02 апр 2020, 19:26
При 125% десктопа - это и есть то расхождение.
Это сделано для тех кто работает с координатами элементов, чтобы не делать перерасчет.

Можем добавить настройку ignore_scale_factor ?

Если это решит проблему, добавьте пожалуйста.
Нужен вариант где будет работать не только методы $mouse но и все остальное тоже.
Или если можно, дайте инструкцию для каких методом нужна коррекция координат.


Почему send_move нормально отрабатывает при том же масштабе?
Разработка решений для автоматизации вашего бизнеса. Telegram: https://t.me/k90_7

Аватара пользователя
k907
Сообщения: 322
Зарегистрирован: 21 май 2014, 20:32

Re: Координаты элемента

Сообщение k907 » 16 апр 2020, 23:44

k907 писал(а):
02 апр 2020, 19:40
bigfozzy писал(а):
02 апр 2020, 19:26
При 125% десктопа - это и есть то расхождение.
Это сделано для тех кто работает с координатами элементов, чтобы не делать перерасчет.

Можем добавить настройку ignore_scale_factor ?

Если это решит проблему, добавьте пожалуйста.
Нужен вариант где будет работать не только методы $mouse но и все остальное тоже.
Или если можно, дайте инструкцию для каких методом нужна коррекция координат.
В 7.0.46 проблема не решена.
Очень неудобно тестировать скрипты когда программа не может переместить курсор в нужные координаты.
В режиме эмуляции событий, работает нормально.
Разработка решений для автоматизации вашего бизнеса. Telegram: https://t.me/k90_7

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Координаты элемента

Сообщение bigfozzy » 17 апр 2020, 04:45

Включите настройку перемещать реальный курсор, вслед за виртуальным для отладки

mouse->move_on_screen происходит без коррекции. Параметры добавим чуть позже.

Ответить