v1.50 • Варианты использования • Справочник по API • О компании и авторы • Примерка в облаке • PyCon Video • Чат в Telegram •中文• हिन्दी • Español • Français • عربى • বাংলা • Русский • Português • Bahasa • Deutsch • Еще..
Чтобы установить этот пакет Python для RPA (роботизированная автоматизация процессов) —
pip install rpa
Чтобы использовать его в блокноте Jupyter, скрипте Python или интерактивной оболочке:
import rpa as r
Примечания об операционных системах и дополнительном режиме визуальной автоматизации —
Простой и мощный API RPA для Python превращает автоматизацию роботизированных процессов в увлекательное занятие! Вы можете использовать его для быстрой автоматизации повторяющихся трудоемких задач на веб-сайтах, в настольных приложениях или в командной строке.
В знак моей признательности за любую новую сообщенную ошибку мы будем вознаграждены подарочной картой на 200 долларов США от выбранного вами продавца. Любое принятое предложение по функциям будет оценено подарочной картой на 100 долларов США.
r . init ()
r . url ( 'https://duckduckgo.com' )
r . type ( '//*[@name="q"]' , 'decentralisation[enter]' )
r . wait () # ensure results are fully loaded
r . snap ( 'page' , 'results.png' )
r . close ()
r . init ( visual_automation = True )
r . dclick ( 'outlook_icon.png' )
r . click ( 'new_mail.png' )
...
r . type ( 'message_box.png' , 'Hi Gillian,[enter]This is ...' )
r . click ( 'send_button.png' )
r . close ()
r . init ( visual_automation = True , chrome_browser = False )
print ( r . read ( 'pdf_report_window.png' ))
print ( r . read ( 'image_preview.png' ))
r . hover ( 'anchor_element.png' )
print ( r . read ( r . mouse_x (), r . mouse_y (), r . mouse_x () + 400 , r . mouse_y () + 200 ))
r . close ()
r . init ( visual_automation = True , chrome_browser = False )
r . keyboard ( '[cmd][space]' )
r . keyboard ( 'safari[enter]' )
r . keyboard ( '[cmd]t' )
r . keyboard ( 'snatcher[enter]' )
r . wait ( 2.5 )
r . snap ( 'page.png' , 'results.png' )
r . close ()
r . init ( visual_automation = True )
r . type ( 600 , 300 , 'neo kobe city' )
r . click ( 900 , 300 )
r . snap ( 'page.png' , 'results.png' )
r . hover ( 'button_to_drag.png' )
r . mouse ( 'down' )
r . hover ( r . mouse_x () + 300 , r . mouse_y ())
r . mouse ( 'up' )
r . close ()
сначала найдите @rpapybot в своем приложении Telegram, чтобы одобрить получение сообщений.
r . telegram ( '1234567890' , 'ID can be string or number, r.init() is not required' )
r . telegram ( 1234567890 , 'Hello World. Olá Mundo. नमस्ते दुनिया. 안녕하세요 세계. 世界,你好。' )
r . telegram ( 1234567890 , 'Use backslash n for new line n This is line 2 of the message' )
безопасно обменивайтесь файлами размером до 100 МБ на PrivateBin, который самоуничтожится через 1 неделю.
bin_url = r . bin ( 'secret_agent_report.pdf' , 'optional password' )
r . telegram ( 1234567890 , 'Access confidential report at ' + bin_url )
Примечания • Идентификаторы элементов • Основные функции • Базовые функции • Профессиональные функции • Вспомогательные функции
См. пример сценария Python, решение RPA Challenge и пример продуктовых магазинов RedMart. Чтобы отправить уведомление приложения Telegram, просто найдите @rpapybot, чтобы разрешить получение сообщений. Чтобы незаметно автоматизировать браузер Chrome, используйте безгласный режим. Чтобы бежать в 10 раз быстрее обычной человеческой скорости, используйте турбо-режим (читайте предостережения!). Некоторые CAPTCHA можно решить с помощью таких сервисов, как 2Captcha, Capsolver, или напрямую путем репликации действий пользователя.
Безопасно делитесь файлами размером до 100 МБ с помощью встроенного временного онлайн-хранилища на выделенном сервере PrivateBin. Вы даже можете запустить RPA в браузере своего телефона, используя этот блокнот Colab (например, сбор данных с помощью до 5 сеансов Colab). По своей конструкции этот пакет имеет корпоративную безопасность, и вы можете устанавливать, обновлять и использовать его без Интернета.
Полностью контролируйте обработку ошибок, установив error(True), чтобы вызывать исключение Python в случае ошибки, и управляйте этим с помощью try-Exception. Для детального контроля над местом загрузки файла веб-браузера используйте download_location(). Чтобы переопределить местоположение папки по умолчанию для установки и вызова TagUI (раздвоенная версия, оптимизированная для пакета rpa), используйте tagui_location().
Если вы используете неанглийскую операционную систему и получаете ошибку «Неверный байт продолжения», вы можете установить кодовую страницу для поддержки UTF-8 или изменить кодировку сценария Python на кодировку вашей ОС. См. этот пример для китайского языка. Используйте focus(), чтобы окна приложений Windows/Mac были в фокусе (альтернативу pywin32 см. здесь).
Некоторым пользователям может быть интересно или полезно использовать искусственный интеллект и машинное обучение (в частности, большие языковые модели LLM), чтобы сгенерировать сценарий шаблона, а затем произвести соответствующую тонкую настройку. См. этот выпуск, посвященный некоторым вопросам, которые я задал Сонету Клода 3.5 от Anthropic и его ответам.
Идентификатор элемента помогает указать RPA для Python, с каким именно элементом пользовательского интерфейса вы хотите взаимодействовать. Например, //*[@id='email'] — это XPath, указывающий на элемент веб-страницы, имеющий атрибут id 'email'.
Для веб-автоматизации идентификатором веб-элемента может быть селектор XPath, селектор CSS или следующие атрибуты: id, name, class, title, aria-label, text(), href в порядке убывания приоритета. Рекомендуем писать XPath вручную или просто использовать атрибуты. Прежде чем наступит тайм-аут, происходит автоматическое ожидание появления элемента, и возвращается ошибка, что элемент не может быть найден. Чтобы изменить таймаут по умолчанию, равный 10 секундам, используйте timeout(). PS. Если вы используете расширение Chrome для чтения XPath, используйте SelectorsHub.
? Идентификатор элемента также может представлять собой снимок изображения в формате .png или .bmp, представляющий элемент пользовательского интерфейса (может быть в настольных приложениях, окне терминала или веб-браузере). Если указанный файл изображения не существует, OCR будет использоваться для поиска этого текста на экране и воздействия на элемент пользовательского интерфейса, содержащий текст, например r.click('Submit Form.png'). Прозрачность (непрозрачность 0 %) поддерживается в изображениях .png. Также можно использовать координаты x, y элементов на экране. Примечания по визуальной автоматизации двух мониторов и проблем с отображением Retina в macOS.
? Еще одним примером идентификатора изображения является PNG-изображение окна (просмотр PDF-файлов, MS Word, текстовое поле и т. д.) с центральным содержимым изображения, установленным как прозрачное. Это позволяет использовать read() и snap() для распознавания текста и сохранения снимков окон приложений, контейнеров, фреймов и текстовых полей с различным содержимым. См. этот пример изображения фрейма PDF с удаленным содержимым, чтобы сделать его прозрачным. Для read() и snap() пара координат x1, y1, x2, y2 может использоваться для определения интересующей области на экране для выполнения оптического распознавания символов или создания снимка.
Функция | Параметры | Цель |
---|---|---|
init() | visual_automation=False , chrome_browser=True | запустить TagUI, автоматическая настройка при первом запуске |
close() | закрыть TagUI, браузер Chrome, SikuliX | |
pack() | для развертывания пакета без Интернета | |
update() | для обновления пакета без интернета | |
error() | True или False | установите значение True, чтобы вызвать исключение при ошибке |
debug() | True или False или text_to_log | распечатать и записать информацию об отладке в rpa_python.log |
по умолчанию RPA для Python работает с нормальной человеческой скоростью, чтобы работать в 10 раз быстрее, используйте init(turbo_mode = True)
Функция | Параметры | Цель |
---|---|---|
url() | webpage_url (нет параметра для возврата текущего URL) | перейти на веб-URL |
click() | element_identifier (или x, y с использованием визуальной автоматизации) | щелкните левой кнопкой мыши по элементу |
rclick() | element_identifier (или x, y с использованием визуальной автоматизации) | щелкните правой кнопкой мыши по элементу |
dclick() | element_identifier (или x, y с использованием визуальной автоматизации) | дважды щелкните элемент |
hover() | element_identifier (или x, y с использованием визуальной автоматизации) | наведите указатель мыши на элемент |
type() | element_identifier (или x, y), text ( '[enter]' / '[clear]' ) | введите текст в элементе |
select() | element_identifier (или x, y), value or text (или x, y) | выберите раскрывающийся вариант |
read() | element_identifier ( 'page' — веб-страница) (или x1, y1, x2, y2) | вернуть текст элемента |
snap() | element_identifier ( 'page' — веб-страница), filename_to_save | сохранить скриншот в файл |
load() | filename_to_load | вернуть содержимое файла |
dump() | text_to_dump , filename_to_save | сохранить текст в файл |
write() | text_to_write , filename_to_save | добавить текст в файл |
ask() | text_to_prompt | спрашивать и возвращать пользовательский ввод |
чтобы дождаться появления элемента до значения timeout(), используйте hover(). чтобы перетащить, сделайте это так
Функция | Параметры | Цель |
---|---|---|
telegram() | telegram_id , text_to_send (сначала найдите @rpapybot) | отправить сообщение в Telegram |
keyboard() | keys_and_modifiers (с использованием визуальной автоматизации) | отправлять нажатия клавиш на экран |
mouse() | 'down' или 'up' (с использованием визуальной автоматизации) | отправить событие мыши на экран |
focus() | app_to_focus (полное название приложения) | сделать приложение в фокусе |
wait() | delay_in_seconds (по умолчанию 5 секунд) | явно подождите некоторое время |
table() | table number или XPath , filename_to_save | сохранить таблицу веб-страницы в CSV |
bin() | file_to_bin , password (необязательно, но рекомендуется) | безопасное временное хранилище |
upload() | element_identifier (CSS), filename_to_upload | загрузить файл в веб-элемент |
download() | download_url , filename_to_save (необязательно) | скачать с URL в файл |
unzip() | file_to_unzip , unzip_location (необязательно) | разархивировать zip-файл в указанное место |
frame() | main_frame id or name , sub_frame (необязательно) | установить веб-фрейм, Frame() для сброса |
popup() | string_in_url (нет параметра для сброса на главную страницу, что особенно важно при использовании для управления другой вкладкой браузера) | установить контекст для всплывающей вкладки веб-сайта |
run() | command_to_run (используйте ; между командами) | запустить команду ОС и вернуть вывод |
dom() | statement_to_run (JS-код для запуска в браузере) | запустить код в DOM и вернуть вывод |
vision() | command_to_run (код Python для SikuliX) | запускать пользовательские команды SikuliX |
timeout() | timeout_in_seconds (пробел возвращает текущий тайм-аут) | изменить таймаут ожидания (по умолчанию 10 с) |
Модификаторы клавиатуры() и специальные клавиши –
[shift] [ctrl] [alt] [win] [cmd] [очистить] [пробел] [enter] [backspace] [tab] [esc] [вверх] [вниз] [влево] [вправо] [pageup] [pagedown ] [удалить] [домой] [конец] [вставить] [f1].. [f15] [printscreen] [прокрутка] [пауза] [capslock] [numlock]
Функция | Параметры | Цель |
---|---|---|
exist() | element_identifier | True или False, если элемент отображается до истечения времени ожидания. |
present() | element_identifier | вернуть True или False, если элемент сейчас присутствует |
count() | element_identifier | вернуть количество веб-элементов как целое число |
clipboard() | text_to_put или без параметра | поместить текст или вернуть текст из буфера обмена в виде строки |
get_text() | source_text , left , right , count=1 | вернуть текст между левым и правым маркерами |
del_chars() | source_text , characters | вернуть текст после удаления заданных символов |
mouse_xy() | вернуть координаты мыши '(x,y)' в виде строки | |
mouse_x() | вернуть координату x мыши как целое число | |
mouse_y() | вернуть координату y мыши как целое число | |
title() | вернуть заголовок текущей веб-страницы в виде строки | |
text() | вернуть текстовое содержимое текущей веб-страницы в виде строки | |
timer() | время возврата, прошедшее в секундах между вызовами в виде числа с плавающей запятой |
чтобы быстро набрать большой объем текста, используйте для вставки буфер обмена() и клавиатуру() вместо type()
TagUI — ведущее программное обеспечение RPA с открытым исходным кодом. с десятками тысяч пользователей. Он был создан в 2016–2017 годах, когда я покинул DBS Bank в качестве инженера по автоматизации тестирования и отправился в годичный отпуск в Восточную Европу. Большая часть его кодовой базы была написана в Нови-Саде, Сербия. В 2018 году я присоединился к AI Singapore, чтобы продолжить разработку TagUI.
В течение нескольких месяцев 2019 года я взял на себя роль отца на постоянной основе, заботясь о своей новорожденной девочке и жене ??. В перерывах между работой с няней я использовал свое время для создания пакета Python, построенного на TagUI. Я надеюсь, что pip install rpa
облегчит жизнь пользователям Python из разных слоев общества.
Я поддерживал пакет (и оптимизированную для него разветвленную версию TagUI) в свое личное время. Но теперь Марсело Сесин, Луис Алехандро, Йожеф Фулоп, Толани Хайе-Тиколо, Шайан Чуа, Лоуренс Лью, Бала Ранганатан и я — новая команда, поддерживающая этот пакет. Мы рады, что им пользуются десятки тысяч людей?
Техническую информацию см. ниже в интуитивно понятной архитектуре и в обширных комментариях в этом однофайловом пакете.
Я хотел бы выразить признательность этим замечательным участникам открытого исходного кода, указанным ниже ❤️
RPA для Python — это программное обеспечение с открытым исходным кодом, выпущенное под лицензией Apache 2.0.
Mindly
Я редко даю рекомендации по продукту, за исключением замечательного программного обеспечения OpenRPA и инструментов RPA с открытым исходным кодом, над которыми я лично работал. Я хотел бы порекомендовать приложение Mindly для составления карт разума, доступное на телефоне и macOS.
Ментальная карта — это интуитивный способ хранения, организации и извлечения информации, поскольку она имитирует работу мозга — отношения между различными концепциями и воспоминаниями. Это идеальное решение для продуктивного использования свободного времени в пути.
На изображении ниже приведен пример Mindly о пользе кофе. Лично я использую его, чтобы планировать свою жизнь на следующие 13 лет, размышлять о том, как стать лучшим мужем, вести список традиционных британских блюд, хранить штрих-коды членов супермаркета, а также делать заметки на ходу. Моя трехлетняя дочь даже имеет интеллектуальную карту, с которой она может играть, ей просто нравится перетаскивать узлы в мусорное ведро. Поэтому я создал в режиме ожидания фиктивную карту разума, которую она может уничтожить.
Лучше всего то, что бесплатная версия должна удовлетворять потребности большинства пользователей. Я не превысил бесплатный лимит в 100 узлов на одну интеллект-карту, но я купил ее довольно рано после ее использования, чтобы поддержать работу команды, стоящей за этим приложением.
PS. Я не знаком с командой Mindly, просто рекомендую приложение, потому что оно классное.