2017-02-23 336 views
1

Я написал сценарий, используя pyautogui, который должен запустить программу (IDE), а затем начать ее использовать. Это сценарий до сих пор:лучший способ автоматизации мыши и клавиатуры с помощью pyautogui

#! python3 
# mouseNow.py - Displays the mouse cursor's current position. 
import pyautogui, sys, subprocess 
from time import sleep 

x,y = 1100,550 

subprocess.call([r'C:\...exe', arg1, arg2]) 
pyautogui.click(x,y) 
sleep(5) # 2 sec should suffice but this is for safety 
pyautogui.typewrite(my_string) 
pyautogui.press('enter') 

Это хорошо работает, но я хочу, чтобы быть портативным. Значения x,y были определены, когда подсказка программы появляется на экране после запуска программы, но я думаю, что это не переносится. Есть ли способ навести указатель мыши на подсказку без предоставления константных параметров? что-то вроде move_mouse_to_window_of_this_process_after_starting_it()

Кроме того, я использую sleep() так что я бы записать данные в окне после он появляется, но я предполагаю, что это не лучший способ (некоторые PC будет работать это гораздо медленнее, я думаю), так есть способ узнать, когда появилось приглашение, а затем сделать pyautogui.typewrite(my_string)?

EDIT: я нашел простое решение для move_mouse_to_window_of_this_process_after_starting_it() :

>>> pyautogui.hotkey('alt', 'tab')

ответ

1

Если вам требуется переносное и надежное решение, вам необходимо найти библиотеку, которая поддерживает технологии доступности для доступа к элементам GUI по тексту. Основные технологии:

  • Win32 API, MS UI Automation (Windows)
  • AT-SPI (Linux)
  • компании Apple Доступность API (MacOS)

Есть несколько GUI с открытым исходным кодом библиотеки автоматизации, поддерживающие некоторые из этих технологий (обычно 1 или 2). Python решения:

Существует также a thread on StackOverflow относительно трудно спит против гибкой ожидание.

Наслаждайтесь! :)

1

То, как вы взаимодействуете с расширением .exe исключает альтернативы координат или слепой стрельбы (Tab, Tab, Enter и т.д. ..).

Если приложение имеет API, вы можете взаимодействовать с ним программно. Если это не так, вы можете попытаться сопоставить местоположение для разрешения экрана x, и это только в том случае, если графический интерфейс используется в полноэкранном/оконном полноэкранном режиме.

+0

есть ли другой способ взаимодействия с файлами .exe, которые не исключают альтернативы? – CIsForCookies

Смежные вопросы