Клик по flash (.swf)

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

galex

Client
Регистрация
14.01.2014
Сообщения
50
Реакции
3
Баллы
8
Пытаюсь эмулировать клик по swf ролику, но безуспешно. Флешка не реагирует.
Подскажите пожалуйста как реализовать клик, когда в браузере лишь swf ролик?
пример ссылки www.youtube.com/v/Wx8ynRJDGk4?version=3&hl=ru_RU.swf
 
По координатам можно попробовать. Экшеном эмуляции мыши.
 
а клик точно попадает по адресу?
 
до.... тоже попробовал, но по факту у вас получается работа не с браузером а с flash... у вас как бы получается кликнуть по флешке целиком, но вам то надо поредать флешке событие о клике, ибо флешка это сама по себе независимая программа со своими переменными и пр и пр.
Я попробовал - у меня не получилось, возможно из под winapi вышло бы лучше, но я его боюсь а на шарпе сделать прямоты рук не хватает
 
Может знает кто, как на С# реализовать клик?
 
  • Спасибо
Реакции: rostonix и Lexicon
Магия!
 
Можно использовать клик по картинке.
 
Не не сработает. при запуске флешролика из, скажем, ютуба все запускается и стартует. В примере же ТС он сразу подгружает объект, с которым работать не получается.
Пробовал:
клик по картинке
клик по элементу
клик по координатам
эмуляцию драгндроп
эмуляцию жмакания Enter
ни одни способ не смог запустить флешку по ссылке ТС
 

При клике правой кнопкой мыши выпадает не меню Zenno, а меню flash плеера.
18_02_2014_11_24_38.jpg


При попытке добавить поиск по картинке через древо элементов, скриншот элемента не осуществляется.
Вместо скриншота страницы - белый прямоугольник.
18_02_2014_11_37_01.jpg
 
1. Берем из списка урл на swf - {-Variable.swf-}
2. Сами генерим локальную страницу. randomname.html
HTML:
Развернуть Свернуть Копировать
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<div id="swf">
   <embed type="application/x-shockwave-flash" src="{-Variable.swf-}"  width="900" height="600">
</div>
</body>
</html>

3. Сохраняем на localhost
4. Переходим на нее в браузере http://localhost/randomname.html
5. Выполняем эмуляцию мыши



п.с1. Можно не генерить страницу, а слать (main page ) сразу как innerhtml для html, но тогда в статусе прогрузка страницы будет раньше чем флеша.
п.с2. При переходе по урлу в браузере , ФФ рендерит в относительных width="100%" height="100%. Возможно? если с этой стороны подойти, сработает клик. Поковырять Get/Set для embed.
п.с3. Стили для div можно оформить по "вкусу". Пример на коленке :)
 
7make, большое спасибо за дельные мысли!
 
Код:
Развернуть Свернуть Копировать
HtmlElement flash = tab.FindElementByAttribute("embed", "id", "movie_player", "text", 0);
Image img = Image.FromFile("D:\\Zen\\Projects\\flash\\Image5.bmp");
Rectangle flash_rectangle = new Rectangle(flash.DisplacementInDocument.X, flash.DisplacementInTabWindow.Y, flash.Width, flash.Height);
Rectangle search_rectangle = new Rectangle(flash_rectangle.X,flash_rectangle.Y,60,50);
Rectangle found_rectangle = new Rectangle(0,0,0,0);
using (var ms = new System.IO.MemoryStream())
{
img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] imageBytes = ms.ToArray();
base64String = Convert.ToBase64String(imageBytes);
}
do
{
rectangleString = tab.FindImage(base64String, new[] {search_rectangle}, 99);
if (!String.IsNullOrWhiteSpace(rectangleString))
{
string[]split = rectangleString.Split(',');
found_rectangle = new System.Drawing.Rectangle(System.Convert.ToInt32(split[0].Trim()), System.Convert.ToInt32(split[1].Trim()), System.Convert.ToInt32(split[2].Trim()), System.Convert.ToInt32(split[3].Trim()));
if (!found_rectangle.IsEmpty)
{
Emulator.MouseСlick(instance.ActiveTab.Handle, MouseButton.Left, MouseButtonEvent.Click, found_rectangle.X, found_rectangle.Y);
//здесть можно кликнуть
}
}
}
while(flash_rectangle.Width > (search_rectangle.X += search_rectangle.Width/2));

Этот код ищет область в ролике по картинке, сохраненной на диске и кликает по ней. В моем случае у меня тоже не получилось кликнуть с помощью встроеного эмулятора (версия 5.0.7), но со сторонним софтом операция выполняется весьма успешно.
 
Вот перечень проблем с которыми может столкнуться пользователь ZP при работе с флешом, поиском картинок и эмуляцией мышки.

1. не работает поиск картинки на странице - версия 5.3.0. На 5.3.1 скорей всего не пофиксили.
Устанавливаю в настройках точность совпадения 99%
Ищется флеш-кнопка с текстом, но находится другая, которая похожа, но текст в ней другой
Очень подозрительно быстро находится любое изображение. В сравнение я ставлю свою библиотеку (основанную также на aforge) которая, несмотря на то, что ищет только в определенной области и тратит времени гораздо больше, делает то что нужно.

2. не срабатывает Tab.MouseClick(x, y, "left", "click") по любому объекту в свернутом режиме - версия 5.3.0. На 5.3.1 так же не работает. На ZP 5.1.2.0 - срабатывает сразу и даже во флеше!

3. хочу обратить внимание на очень нужный но очень странный метод Tab.MouseMove(x, y) - любая версия, любой объект.
Теоретически это должен быть аналог Emulator.MouseMove, который работает отлично и без тормозов, но забирает мышку у пользователя. Мне такой эмулятор не нужен в принципе, потому что даже при перекрытом окне он уже не работает. А про многопоток я вобще помолчу.
Tab.MouseMove(x, y) - хороший вариант, но почему время выполнения этого метода такое продолжительное? Если мне нужно продвинуться по 250 точкам, то можно смело идти на кухню чай пить. Хотелось чтобы она не ждала с моря погоды и работала и даже при скрытом окне.
Я хоть и нашел выход в написании своей библиотеки, но это временно. Не каждый заказчик захочет добавлять себе какие-то левые библиотеки, если даже и разберется куда их ставить.
Вот такие пироги.
 
  • Спасибо
Реакции: bigcajones
1 , 2 - присылайте примеры на почту нам.
3 - это только в PM отрисовка идет. В ZP все быстро.
 
1 пункт у меня был еще в более старых версиях лечилось или перезагрузкой (компа) или привязкой со смещением к другим объектам
 
Вот примерный шаблон, в котором можно проверить то, что я описал выше. Перед кликом по области сверните мейкер и клика не будет.
http://dropmefiles.com/3OhNe
 
У меня вообще эти клики не работают в последнем билде. У вас работает шаблон без ошибок в развернутом виде?
 
У вас работает шаблон без ошибок в развернутом виде?
Клик в ПМ работает - должен кликнуть в левый верхний угол по ссылке. Поиск картинок - нет.
И по пункут 3. - в Постере все методы Tab.MouseMove() - не работают! Координаты точные, перед тем, как запустить в постере тестировал очень долго в ПМ. Так что все так же приходится пользоваться своей библиотекой, которая проще, но хоть работает.
 
Можно поподробнее про координаты?
Сдается мне у вас классические грабли на тему того, что размер экрана ( и как следствие координаты) в постере и в мейкере разные.
 
Координаты как координаты. Все методы, которые эмулируют мыши: зенкины, мои - работают с одними и теми же координатами. Мои работают, зенкины - читайте выше. Я поддерживаю тему стабильности работы эмуляторов и работы с изображениями. Вопросы кривых рук хотел бы не обсуждать. Если у кого есть информаця о возможности замены на более стабильную ZennoLab.CommandCenter.dll с сохранением актуальной версии продукта или вдруг, так случилось, есть исходный код метода Tab.MouseMove, пишите, не стесняйтесь :)
 
Приложите пример на котором по координатам не получается клик. На Вашем примере непонятно, клики по картинке не работают.
 
В моем примере все просто - первый клик по картинке показывает что картинка находится и клик по картинке произходит. Повторный клик по той же картинке показывает что поиск по картинке не работает, находится что-то другое и кликается по нему. Третий блок кликает в левый верхний угол по координатам. В открытое (или перекрытое другим) окно клик произходит, в свернутое - нет. В версии 5.1.2 - работало (и сейчас работает только там), только я не собираюсь убеждать заказчика не обновляться.
По поводу Tab.MouseMove. В постере не работает. В этом я тоже не сомневаюсь, потому что явно вижу как обработчик событий обьекта <canvas> обрабатывает событие MOUSE_DOWN, а дальше все - творится что-то непонятное: нового события так и не произходит, но если я наведу свою мышку (руками, не програмно) то к моим действиям добавляются те незаконченные действия от Tab.MouseMove, которые произходят в пределах <canvas>.
Все что мне (да и всем пользователям) нужно: поиск по картинке и рабочие MouseClick с MouseMove от Tab'a в любых условиях.
 

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