LINUX.ORG.RU

как кликнуть в опр. координатах в мозилле через скрипт

 ,


0

0

Привет после прочтения этой темы появился интерес написать простенький бот для браузернуй игрушки - просто кликать по нужным координатам через определенные промежутки времени. Но заступорился в самом начале. Ввожу:

xdotool getmouselocation
получаю x:429 y:266 screen:0 window:50331819

затем делаю

#!/bin/bash

xdotool mousemove x=429 y=266
xdotool click 1

Но какого то фига кликается в одно и тоже место какие бы координаты я не задавал. Если точнее, то кликает кнопочку на панельке xfce в самом верху.

xdotool mousemove x=429 y=266 screen:0 window:50331819 тоже не хочет

Сама игрушка открыта в Firefox, сделана она на flash. Подскажите что я делаю не так?



Последнее исправление: cetjs2 (всего исправлений: 2)

xdotool mousemove 429 266 click 1
Одной командой.

Подскажите что я делаю не так?

Xdotool принимает координаты без указания 'x=' 'y='.
В противном случае, по логике, оно должно будет кидать в 0 0.

Spirit_of_Stallman ★★★
()
Последнее исправление: Spirit_of_Stallman (всего исправлений: 1)
Ответ на: комментарий от Spirit_of_Stallman

Большое спасибо, сработало. Можно ли как то сделать, чтобы эти действи выполнялись в фоне? Например я что то делаю в терминале, а скрипт одновременно нажимает кнопки в firefox не мешая работе в терминале?

censured
() автор топика
Ответ на: комментарий от censured

Обычно, если действия нужны только в промежуток времени, который не постоянен и известен только пользователю - запускают таки в ручную.
Откройте еще один терминал (или вкладку (если ваш поддерживает оные)), запустите там скрипт и работайте дальше с другим окном терминала.
Другой вариант отправить процесс в фон (точнее fork), добавив после запуска скрипта '&' (/home/user/script.sh &)(только если скрипт завязан на вечный цикл, то потом убить его по pid'у).
PS: между кликами xdotool'а советую ставить паузы, минимум в секунду, а лучше пару (не каждое приложение успеет отработать всё за один миг (да и антиботы могут быть)).

Spirit_of_Stallman ★★★
()
Ответ на: комментарий от censured

Хотя на ваш вопрос можно посмотреть иначе.
Если вы о фактическом расположении окон - то нет, данным методом этого не достичь.
Ибо работа идёт «от пользователя». Вы же не можете кликать по окну, что находится под текущим и активным :)

Spirit_of_Stallman ★★★
()

Подскажите что я делаю не так?

Ты башем кликаешь по координатам экрана.

Открой дебаггер и посмотри как она общается с сервером, там наверняка тривиальный протокол.

Kalashnikov ★★★
()
Ответ на: комментарий от censured

Попробуй в отдельных X поднимать.

anonymous
()
Ответ на: комментарий от Kalashnikov

Это, да. Исхожу, что единственный способ.

anonymous
()

Спасибо всем, кто ответил, можно было, конечно, через виртуалку сделать и не парится, но как то жаба душит меня оперативку и пв выделять. Через иксы попозже поищу, щяс есть более важные дела.

censured
() автор топика

JavaScript.

createEvent
initMouseEvent
dispatchEvent

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.