получить x координату заданного изображения на странице

Все вопросы касающиеся использования
программы можно задать здесь
E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

получить x координату заданного изображения на странице

Сообщение E=mc2 » 29 янв 2016, 01:52

Здравствуйте.
Win7pro, HE 4.9.8
Видимо не понимаю как это работает.

$browser->navigate('https://site.com/');
$browser->wait_for(120, 1);
sleep(1);
$x = $webpage->get_x_in_webpage_picture(...);
$y = $webpage->get_y_in_webpage_picture(...);

Загружаю страничку Мозилой (так же IE) делаю снимок экрана. Со снимка вырезаю фотошопом нужный элемент и сохраняю как bmp с глубиной 24. Paint (не смейтесь) тоже пробывал.

$x, $y отдаёт левый верхний угол страницы -1, -1

Нерепробовал разные браузеры, редакторы, картинки, флэш. Заколебался...
Путь к изображению правильный - НЕ ошибки не пишет. Страница загружается полностью. Пробовал на разных сайтах. Некаких элементов типа окон или ещё какой фигни на страничках в момент работы функции нет.
Что делаю не так?
Должно быть найдено изображение не зависимо от того как оно сформировано. Правильно? Хоть это картинка, флэш или текст. HTML роли не играет. С снимка можно вырезать что хочешь.
Помогите, пожалуйста. В чем может быть дело?

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: получить x координату заданного изображения на странице

Сообщение E=mc2 » 29 янв 2016, 13:52

Хоть какие-то подсказки, чтоб оттестировать. У меня идеи кончились.

А может эта функция не работает? Может я что-то пропустил в сообщениях.
Отпишитесь, пожалуйста, кто этот функционал использует в работе.

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: получить x координату заданного изображения на странице

Сообщение Support » 29 янв 2016, 16:49

Добрый день.
Попробуйте сделать следующим образом:
1.Для этого надо сделать скриншот через webpage->print_screen.
2.Открыть его в Paint
3.Вырезать нужный кусок скриншота - и сохранить его как 24-х разрядное в формате bmp.
4.Затем этот файл подать на вход в функцию и она найдет его координаты.

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: получить x координату заданного изображения на странице

Сообщение E=mc2 » 29 янв 2016, 18:20

Вот какая странность. Полный код:

Код: Выделить всё

<?php
/**
 * WEBPAGE_PICTURE test
 */

$xhe_host = "127.0.0.1:7000";
require ("../Templates/xweb_human_emulator.php");

define('PATH_BUTTONS','C:\\Users\\WWSgast\\Desktop\\');

$browser->navigate('https://www.google.de/?gws_rd=ssl');
$browser->wait_for(120, 1);
sleep(1);

echo $webpage->print_screen(PATH_BUTTONS."scr.bmp").'<br>';

$app->quit();
?>
Вот что получается. Возвращает 1. Но картинки на столе нет. Расширения и пути пробовал разные.
Что может быть?

oleg88889
Сообщения: 128
Зарегистрирован: 19 мар 2013, 14:35

Re: получить x координату заданного изображения на странице

Сообщение oleg88889 » 30 янв 2016, 00:03

Судя по справке функция ищет только картинку, если это другое то не сработает. Картинку находит, пробовал. Я так думаю что то что вы хотите простой функцией не реализовать, по крайней мере я не понимаю как.
Я делал так: $element(frame, div, etc...)->screenshot_by_number, дальше сравнивал имеджиком с оригиналом, можно ним же резать куски и сравнивать их. Имеджик хорошая вещь, работает быстро. Так как вы хотите не получиться.

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: получить x координату заданного изображения на странице

Сообщение E=mc2 » 30 янв 2016, 12:11

Спасибо за подсказку, Олег.
Сдвинулся с мёртвой точки. Стартовая google
https://www.google.de/?gws_rd=ssl
Картинка 272х95
div id="hplogo"

Код: Выделить всё

$div->screenshot_by_attribute(PATH_BUTTONS."scr.bmp","id","hplogo",true);
сработало. Получил картинку почему-то 980х765.
Вложения
scr.png
scr.png (3.16 КБ) 670 просмотров

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: получить x координату заданного изображения на странице

Сообщение E=mc2 » 30 янв 2016, 12:13

вырезал мишень
Вложения
Untitled-1.png
Untitled-1.png (1.93 КБ) 670 просмотров

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: получить x координату заданного изображения на странице

Сообщение E=mc2 » 30 янв 2016, 12:16

Код: Выделить всё

$x = $webpage->get_x_in_webpage_picture(PATH_BUTTONS."1.bmp");
$y = $webpage->get_y_in_webpage_picture(PATH_BUTTONS."1.bmp");

$mouse->move($x,$y,2,2);
Показывает угол браузера. Т.е. ничего не находит

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: получить x координату заданного изображения на странице

Сообщение E=mc2 » 30 янв 2016, 15:04

странно, что не работает

Код: Выделить всё

$webpage->print_screen("scr.bmp");
Ёмоё не хочеться самому изобретать велосипед!

oleg88889
Сообщения: 128
Зарегистрирован: 19 мар 2013, 14:35

Re: получить x координату заданного изображения на странице

Сообщение oleg88889 » 30 янв 2016, 16:17

А шо делать? Я пользовал примерно такое $result = $image1->compareImages($image2, Imagick::METRIC_MEANSQUAREERROR);
Наверное еще зависит от текущих задач, имеджик для людей сделан, там все просто и очень функционально, если б еще метаданные умел писать было бы счастье.
Вопрос не по теме, может кто знает вменяемый метод записи метаданных в джипеги?

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

Re: получить x координату заданного изображения на странице

Сообщение bigfozzy » 30 янв 2016, 19:59

В последней версии примеры выполнения функций обновлены, все вроде работает. Также добавлены новые функции по работе с картинками.

PS: если что нужно по картинкам еще - пишите.

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

Re: получить x координату заданного изображения на странице

Сообщение k907 » 31 янв 2016, 00:38

oleg88889 писал(а):Вопрос не по теме, может кто знает вменяемый метод записи метаданных в джипеги?
Через Exiftool попробуйте, запросы из скрипта удобней слать с помощью shell_exec ()
Разработка решений для автоматизации вашего бизнеса. Telegram: https://t.me/k90_7

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: получить x координату заданного изображения на странице

Сообщение E=mc2 » 31 янв 2016, 11:58

bigfozzy писал(а): PS: если что нужно по картинкам еще - пишите.
Собственно базовый функционал по картинкам я у себя не могу освоить. Не работает.
Я почему выше показал код? Там пара строчек и не понятно где ошибки и почему не срабатывает.

Офигенно полезные функции. Раньше не было мотивации разобратся. И тут на тебе - нежданка.
Вопросы.
1. $webpage->print_screen делает снимок экрана типа как imagegrabscreen() и XHE, соответственно, всё равно какой html страницы. Так?
2. Поиск $webpage->get_x_in_webpage_picture найдёт координаты фрагмента страницы, аналогичного вырезанному со снимка образцу. Так?

Кнопка Google, исходя из этого

Код: Выделить всё

<input type="submit" jsaction="sf.chk" name="btnK" aria-label="Google-Suche" value="Google-Suche">
будет XHE однозначно находиться. Пофиг как формируется.

Олег выше высказал свои соображения. bigfozzy, Вы никак не прокомментировали. Это важный момент. Нет?

3. Не замечены ли сбои работы функционала по картинкам при следующей конфигурации:
- Windows 7 Professional, 64-bit 6.1.7601, Service Pack 1
- IE 11 Version: 11.0.9600.17914
- VMware Workstation 11.0.0 build-2305329
- XWeb Human Emulator (Advanced) 4.9.8
- PHP Version => 5.5.15
- System => Windows NT WIN-9......T 6.1 build 7601 (Windows 7 Business Edition Service Pack 1) i586
- Build Date => Jul 23 2014 14:58:09
- Compiler => MSVC11 (Visual C++ 2012)
- PHP API => 20121113
- PHP Extension => 20121212
- Zend Extension => 220121212
- Zend Extension Build => API220121212,TS,VC11
- PHP Extension Build => API20121212,TS,VC11

Переключал XHE на пакет PHP из ХНЕ и из ХАМРР - без изменений. Переходить на новые версии софта не с руки - всё работает непрерывно больше года как часы. Прерываться будет больно. Функционал картинок вроде "древний" и должен без проблем фурычить?

bigfozzy, надеюсь на Ваши подсказки.

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

Re: получить x координату заданного изображения на странице

Сообщение bigfozzy » 01 фев 2016, 13:22

насчет старой версии не уверен - там возможно помоему тока работа с bmp - может из-за этого. А так сделать снимок через webpage->print_screen - получится bmp файл - если там есть то что надо - то функции $webpage->get_x_in_webpage_picture найдет это. Но вырезать надо из того же файла (я использовал Paint)- котjрый сделать print_screen. Как вариант запустить тест - http://humanemulator.net/objects/WEB/we ... icture.php. если он работает - то все будет работать как надо и на старой версии.

oleg88889
Сообщения: 128
Зарегистрирован: 19 мар 2013, 14:35

Re: получить x координату заданного изображения на странице

Сообщение oleg88889 » 01 фев 2016, 13:55

Через Exiftool попробуйте, запросы из скрипта удобней слать с помощью shell_exec ()
Спасиб, буду разбираться в командной строке, хотелось конечно счастья в виде пхп екстеншна, но нету.
странно, что не работает $webpage->print_screen("scr.bmp");
попробуйте полный путь, у меня так работает

Код: Выделить всё

$webpage->print_screen("C:/3.jpg",$xl=-1,$yt=-1,$xr=-1,$yb=-1);
насчет старой версии не уверен - там возможно помоему тока работа с bmp - может из-за этого.
В новой вроде тоже бмп, по крайней мере так работает

Код: Выделить всё

echo $browser->navigate("http://bigfozzy.com")."<br>";
$anchor->screenshot_by_number("C:/4.bmp","0",$frame=-1);
$x = $webpage->get_x_in_webpage_picture("C:/4.bmp");
$y = $webpage->get_y_in_webpage_picture("C:/4.bmp");
echo $mouse->move($x,$y)."<br>";
Windows 7 Professional, 64-bit 6.1.7601, Service Pack 1
Семерка она нормальная если чистая, т.е. ENG, если накатить локаль это уже глючная гадость, вин сервер 2008р2 попользуйте, не пожалеете.
P.S. Я бы лично после знакомства с имеджиком внутренние функции не использовал, просто есть класный и быстрый екстеншн, отлично задокументирован если что http://stackoverflow.com/questions/2576 ... server-2-5
P.P.S. Внутренняя функция очень ресурсоемка, имеджик на порядок быстрей.

Ответить