GithubHelp home page GithubHelp logo

auskas / ruautogui Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 0.0 290 KB

Программное нажатие клавиш клавиатуры, включая кириллические символы, ввод строк с имитацией человеческого поведения. Программный контроль курсора мыши с имитацией человеческого поведения.

License: MIT License

Python 100.00%
keyboard-automation mouse-automation

ruautogui's Introduction

RuAutoGUI

RuAutoGUI программный пакет для языка программирования Python с имитацией человеческого поведения для программного управления мышью и клавиатурой.

Возможности модуля

  • Последовательное нажатие клавиш клавиатуры для ввода текста в формы web страниц и т.п.
  • Поддержка кириллических символов при вводе текста.
  • Поддержка горячих клавиш, например Alt+Tab или Alt+Shift.
  • Настраиваемая случайная задержка между вводом символов.
  • Опция исправляемых ошибок при вводе текста с настраиваемой частотой ошибок.
  • Перемещение курсора мыши в заданную точку по так называемой кривой Безье.
  • Случайный или настраиваемый порядок кривой Безье.
  • Случайное движение курсора мыши для имитации "хватания" рукой мыши.
  • Клик и двойной клик.

Системные требования

  • OS Windows 10 (не проверялось на ранних версиях)
  • Python 3.6 и выше

Установка

В данный момент поддерживается установка из репозитария github:

https://github.com/Auskas/ruautogui.git

Примеры использования модуля клавиатуры

from ruautogui import keyboard as kb

text = "Пример использования модуля клавиатуры!"
kb.type(text, mode="fast")

keyboard_example_1


from ruautogui import keyboard as kb
   
text = "Пример использования с исправляемыми опечатками!"
kb.type(text, mode="ultrafast", typo=True)

keyboard_example_2

Пример использования модуля мыши

from ruautogui import mouse as ms 
import time

ms.grab() # Имитация захвата рукой мыши
time.sleep(1) # Таймаут перед следующим действием
ms.move((300,300)) # Движение мыши по кривой Безье до точки 300,300

mouse_example

Пример совместного использования с пакетом Selenium

В случае, если вы хотите имитировать поведение реального человека на web странице, простое использование пакета Selenium не является достаточным. При использовании ресурсом технологии webvisor, если вы переживаете, что ваш робот или парсер может быть выявлен, используёте RuAutoGUI совместно с Selenium.

from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options as ChromeOptions
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from ruautogui import keyboard as kb 
from ruautogui import mouse as ms 
import sys, random, time

chrome_options = ChromeOptions()
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = Chrome(options=chrome_options)

driver.get('https://github.com')
kb.press('f11') # Полноэкранный режим браузера
try:
    input_field = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.XPATH, "//input[contains(@class, 'form-control')]"))
    )
except Exception as exc:
    print('Невозможно найти поле ввода...')
    driver.quit()
    sys.exit()

input_field = driver.find_element_by_xpath("//input[contains(@class, 'form-control')]")
ms.grab()
time.sleep(1)
field_location = (input_field.location['x'], input_field.location['y'])
field_size = (input_field.size['width'], input_field.size['height'])

target_loc = (
    field_location[0] + random.randint(field_size[0] // 4, field_size[0] // 2),
    field_location[1] + random.randint(field_size[1] // 4, field_size[1] // 2)
)
ms.move(target_loc)
time.sleep(1)
ms.click()
time.sleep(1)
kb.type('ruautogui', mode='ultrafast')
time.sleep(1)
kb.press('enter')
time.sleep(5)
driver.quit()

selenium_example

Ограничения в использовании RuAutoGUI

  • Переключение между латиницей и кириллицей осуществляется горячими клавишами (Alt+Shift по умолчанию). При необходимости вы можете изменить горячие клавиши переключения раскладки в модуле keyboard.py: константы CHANGE_KEYBOARD_LAYOUT_KEY1 и CHANGE_KEYBOARD_LAYOUT_KEY2.

TODO

  • Необходимо изменить порядок переключения между раскладками. Вместо использования горячих клавиш необходимо программное изменение раскладки клавиатуры. В Windows мне известен вариант переключения раскладки для текущего процесса, однако пока не нашёл вариант переключения для произвольного процесса.
  • Необходима поддержка Linux и MacOS.
  • Реализация скроллинга.

ruautogui's People

Contributors

auskas avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.