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, просто рекомендую приложение, потому что оно классное.